Hvis du har brug for at returnere en liste over alle CHECK
begrænsninger, der er blevet deaktiveret i en SQL Server-database, kan du køre T-SQL-koden nedenfor.
Eksempel 1 – Returner kun deaktiveret CHECK-begrænsninger
Denne forespørgsel returnerer kun den deaktiverede CHECK
begrænsninger i den aktuelle database. Det returnerer begrænsningsnavnet, navnet på tabellen, som det er anvendt på, og 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') | +----------------+-----------------+-------------------------------+
Dette forespørger sys.check_constraints
systemvisning. Vi ved, at det kun returnerer deaktiverede begrænsninger, fordi WHERE
klausul specificerer kun rækker, der har is_disabled
kolonne sat til 1
.
Hvis du vil returnere alle aktiverede CHECK
begrænsninger, skal du blot ændre 1
til 0
.
Eksempel 2 – Returner alle CHECK-begrænsninger
Følgende forespørgsel returnerer alle CHECK
begrænsninger for den aktuelle database (ikke kun de deaktiverede). Denne gang returnerer jeg is_disabled
kolonne for at demonstrere, hvor den forrige forespørgsel fik sin værdi fra:
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 | +----------------+-----------------+---------------+------------------+
Jeg har også inkluderet is_not_trusted
kolonne i denne forespørgsel. Det er klogt at være opmærksom på denne værdi, fordi en begrænsning kan forblive upålidelig, selv efter den er blevet genaktiveret. For en detaljeret diskussion (og eksempler) af dette flag, se Hvad du bør vide om MED NOCHECK, når du aktiverer en CHECK-begrænsning i SQL Server.