Sie können den folgenden Code verwenden, um alle CHECK
zu deaktivieren und Fremdschlüsseleinschränkungen für eine bestimmte Tabelle in SQL Server.
Ersetzen Sie einfach TableName
mit dem Namen der entsprechenden Tabelle.
ALTER TABLE TableName NOCHECK CONSTRAINT ALL
Unten ist ein Beispiel, wo ich das mache und dann das Ergebnis überprüfe.
Beispiel 1 – Überprüfen Sie die Einschränkungen
Zuerst werfe ich einen kurzen Blick auf den aktuellen CHECK
und Fremdschlüsseleinschränkungen in der Datenbank, um zu sehen, ob sie aktiviert oder deaktiviert sind.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
Ergebnis:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 0 | 0 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
Es gibt also derzeit vier CHECK
Constraints in der Datenbank, von denen drei für den ConstraintTest
sind Tabelle.
Wir können sehen, dass alle Einschränkungen aktiviert sind, weil is_disabled auf 0 gesetzt ist .
Beispiel 2 – Deaktivieren Sie die Beschränkungen
Jetzt deaktiviere ich alle Einschränkungen für den ConstraintTest
Tabelle:
ALTER TABLE ConstraintTest NOCHECK CONSTRAINT ALL;
Beispiel 3 – Überprüfen Sie das Ergebnis
Jetzt führe ich dieselbe Abfrage aus dem ersten Beispiel aus, um das Ergebnis anzuzeigen.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
Ergebnis:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 1 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 1 | 1 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
Wie erwartet, alle drei Constraints für den ConstraintTest Tabelle wurden deaktiviert (weil die is_disabled Spalte ist auf 1 gesetzt für diese Einschränkungen).
Beachten Sie, dass is_not_trusted ist Spalte wird ebenfalls auf 1 gesetzt . Dies ist eine wichtige Überlegung, insbesondere wenn Sie beabsichtigen, eine Ihrer deaktivierten Einschränkungen wieder zu aktivieren.
Informationen zum Wiederherstellen des Vertrauens beim erneuten Aktivieren Ihrer Einschränkungen finden Sie unter Was Sie über WITH NOCHECK wissen sollten, wenn Sie eine CHECK-Einschränkung in SQL Server aktivieren. Die Informationen in diesem Artikel gelten auch für Fremdschlüssel.
Deaktivieren Sie die Beschränkungen einzeln
Wenn Sie nicht alle Einschränkungen in der Tabelle deaktivieren möchten, können Sie sie einzeln deaktivieren. Siehe So deaktivieren Sie eine CHECK-Einschränkung in SQL Server und So deaktivieren Sie einen Fremdschlüssel in SQL Server.
Aktivieren Sie die Einschränkungen erneut
Wenn Sie alle Beschränkungen für eine Tabelle erneut aktivieren müssen, finden Sie weitere Informationen unter So aktivieren Sie ALLE CHECK- und Fremdschlüsselbeschränkungen für eine Tabelle.
Wenn Sie sie einzeln erneut aktivieren müssen, finden Sie weitere Informationen unter So aktivieren Sie eine CHECK-Einschränkung in SQL Server und So aktivieren Sie einen Fremdschlüssel in SQL Server.