Wenn Sie eine Liste aller CHECK
zurückgeben müssen Einschränkungen, die in einer SQL Server-Datenbank deaktiviert wurden, können Sie den folgenden T-SQL-Code ausführen.
Beispiel 1 – Nur deaktivierte CHECK-Einschränkungen zurückgeben
Diese Abfrage gibt nur das deaktivierte CHECK
zurück Beschränkungen in der aktuellen Datenbank. Es gibt den Einschränkungsnamen, den Namen der Tabelle, auf die es angewendet wird, und die Definition der Einschränkung zurück.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Ergebnis:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Dies fragt die sys.check_constraints
ab Systemansicht. Wir wissen, dass es nur deaktivierte Einschränkungen zurückgibt, weil WHERE
-Klausel gibt nur Zeilen mit is_disabled
an Spalte auf 1
gesetzt .
Wenn Sie alle aktiviert zurückgeben möchten CHECK
Einschränkungen ändern Sie einfach die 1
auf 0
.
Beispiel 2 – Alle CHECK-Einschränkungen zurückgeben
Die folgende Abfrage gibt all zurück CHECK
Einschränkungen für die aktuelle Datenbank (nicht nur die deaktivierten). Dieses Mal gebe ich den is_disabled
zurück Spalte, um zu demonstrieren, woher die vorherige Abfrage ihren Wert hat:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Ergebnis:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Ich habe auch den is_not_trusted
eingefügt Spalte in dieser Abfrage. Es ist ratsam, diesen Wert im Auge zu behalten, da eine Einschränkung auch nach der erneuten Aktivierung nicht vertrauenswürdig bleiben kann. Eine ausführliche Diskussion (und Beispiele) zu diesem Flag finden Sie unter Was Sie über WITH NOCHECK wissen sollten, wenn Sie eine CHECK-Einschränkung in SQL Server aktivieren.