Om du behöver returnera en lista över alla CHECK
begränsningar som har inaktiverats i en SQL Server-databas kan du köra T-SQL-koden nedan.
Exempel 1 – Endast retur inaktiverade KONTROLLERA begränsningar
Den här frågan returnerar endast den inaktiverade CHECK
begränsningar i den aktuella databasen. Den returnerar begränsningsnamnet, namnet på tabellen som den tillämpas på och begränsningens definition.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Resultat:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Detta frågar efter sys.check_constraints
systemvy. Vi vet att det bara returnerar inaktiverade begränsningar eftersom WHERE
sats anger endast rader som har is_disabled
kolumn inställd på 1
.
Om du vill återställa alla aktiverade CHECK
begränsningar, ändra helt enkelt 1
till 0
.
Exempel 2 – Returnera alla CHECK-begränsningar
Följande fråga returnerar alla CHECK
begränsningar för den aktuella databasen (inte bara de inaktiverade). Den här gången returnerar jag is_disabled
kolumn för att visa var den föregående frågan fick sitt värde från:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Resultat:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Jag har också inkluderat is_not_trusted
kolumnen i den här frågan. Det är klokt att vara uppmärksam på detta värde, eftersom en begränsning kan förbli opålitlig även efter att den har återaktiverats. För en detaljerad diskussion (och exempel) av denna flagga, se Vad du bör veta om MED NOCHECK när du aktiverar en CHECK-begränsning i SQL Server.