Si vous avez besoin de retourner une liste de tous les CHECK
contraintes qui ont été désactivées dans une base de données SQL Server, vous pouvez exécuter le code T-SQL ci-dessous.
Exemple 1 : Renvoyer uniquement les contraintes CHECK désactivées
Cette requête renvoie uniquement le CHECK
désactivé contraintes dans la base de données courante. Elle renvoie le nom de la contrainte, le nom de la table à laquelle elle s'applique et la définition de la contrainte.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Résultat :
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Cela interroge le sys.check_constraints
vue système. Nous savons qu'il ne renvoie que des contraintes désactivées car le WHERE
la clause spécifie uniquement les lignes qui ont le is_disabled
colonne définie sur 1
.
Si vous voulez tout rendre activé CHECK
contraintes, changez simplement le 1
à 0
.
Exemple 2 – Renvoyer toutes les contraintes CHECK
La requête suivante renvoie tous CHECK
contraintes pour la base de données actuelle (pas seulement celles qui sont désactivées). Cette fois, je renvoie le is_disabled
colonne afin de démontrer d'où la requête précédente a tiré sa valeur :
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Résultat :
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
J'ai également inclus le is_not_trusted
colonne dans cette requête. Il est prudent de garder à l'esprit cette valeur, car une contrainte peut rester non fiable même après avoir été réactivée. Pour une discussion détaillée (et des exemples) de cet indicateur, consultez Ce que vous devez savoir sur WITH NOCHECK lors de l'activation d'une contrainte CHECK dans SQL Server.