Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment renvoyer toutes les contraintes CHECK désactivées dans SQL Server (exemple T-SQL)

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.