U kunt de onderstaande code gebruiken om alle CHECK
. uit te schakelen en externe-sleutelbeperkingen voor een specifieke tabel in SQL Server.
Vervang gewoon TableName
met de naam van de toepasselijke tabel.
ALTER TABLE TableName NOCHECK CONSTRAINT ALL
Hieronder ziet u een voorbeeld waarin ik dit doe en vervolgens het resultaat controleer.
Voorbeeld 1 – Bekijk de beperkingen
Ik zal eerst even kijken naar de huidige CHECK
en externe sleutelbeperkingen in de database, om te zien of ze al dan niet zijn ingeschakeld of uitgeschakeld.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', naam AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM sys.check_constraint; Resultaat:+----------------+-----------------+----------- ----+------------------+| Tafel | beperking | is_disabled | is_not_trusted ||----------------+-----------------+------------ ---+------------------|| BeperkingTest | chkPrijs | 0 | 0 || BeperkingTest | chkValidEndDate | 0 | 0 || BeperkingTest | chkTeamSize | 0 | 0 || beroep | chkJobTitel | 0 | 0 |+----------------+-----------------+------------ ---+------------------+Er zijn dus momenteel vier
CHECK
beperkingen in de database, waarvan er drie voor deConstraintTest
tafel.We kunnen zien dat alle beperkingen zijn ingeschakeld omdat is_disabled is ingesteld op 0 .
Voorbeeld 2 – De beperkingen uitschakelen
Nu schakel ik alle beperkingen uit voor de
ConstraintTest
tafel:WIJZIG TABEL ConstraintTest NOCHECK CONSTRAINT ALLES;Voorbeeld 3 – Controleer het resultaat
Nu voer ik dezelfde query uit van het eerste voorbeeld om het resultaat te zien.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', naam AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM sys.check_constraint; Resultaat:+----------------+-----------------+----------- ----+------------------+| Tafel | beperking | is_disabled | is_not_trusted ||----------------+-----------------+------------ ---+------------------|| BeperkingTest | chkPrijs | 1 | 1 || BeperkingTest | chkValidEndDate | 1 | 1 || BeperkingTest | chkTeamSize | 1 | 1 || beroep | chkJobTitel | 0 | 0 |+----------------+-----------------+------------ ---+------------------+Zoals verwacht, alle drie de beperkingen voor de ConstraintTest tabel zijn uitgeschakeld (omdat de is_disabled kolom is ingesteld op 1 voor die beperkingen).
Merk op dat de is_not_trusted kolom is ook ingesteld op 1 . Dit is een belangrijke overweging, vooral als u van plan bent een van uw uitgeschakelde beperkingen opnieuw in te schakelen.
Zie Wat u moet weten over WITH NOCHECK bij het inschakelen van een CHECK-beperking in SQL Server voor informatie over het herstellen van vertrouwen wanneer u uw beperkingen opnieuw inschakelt. De informatie in dat artikel is ook van toepassing op externe sleutels.
Schakel de beperkingen afzonderlijk uit
Als u niet alle beperkingen in de tabel wilt uitschakelen, kunt u ze afzonderlijk uitschakelen. Zie Hoe u een CHECK-beperking in SQL Server uitschakelt en hoe u een externe sleutel in SQL Server uitschakelt.
Schakel de beperkingen opnieuw in
Als u alle beperkingen voor een tabel opnieuw moet inschakelen, raadpleegt u Hoe u ALLE CONTROLE- en Foreign Key-beperkingen voor een tabel inschakelt.
Als u ze afzonderlijk opnieuw moet inschakelen, raadpleegt u Een CONTROLE-beperking inschakelen in SQL Server en Een externe sleutel inschakelen in SQL Server.