Voici du code T-SQL que vous pouvez utiliser pour obtenir une liste de toutes les contraintes CHECK et de clé étrangère dans une base de données SQL Server.
Dans l'exemple suivant, je fais un UNION
sur deux requêtes de base de données. On interroge sys.foreign_keys
pour les clés étrangères désactivées, et les autres requêtes sys.check_constraints
pour les contraintes CHECK désactivées.
SELECT SCHEMA_NAME(schema_id) AS [Schema], OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', type_desc, is_disabled, is_not_trusted FROM sys.foreign_keys WHERE is_disabled = 1 UNION SELECT SCHEMA_NAME(schema_id), OBJECT_NAME(parent_object_id), name, type_desc, is_disabled, is_not_trusted FROM sys.check_constraints WHERE is_disabled = 1;
Résultat :
+----------+------------------+--------------------+------------------------+---------------+------------------+ | Schema | Table | Constraint | type_desc | is_disabled | is_not_trusted | |----------+------------------+--------------------+------------------------+---------------+------------------| | dbo | BandMember | FK_BandMember_Band | FOREIGN_KEY_CONSTRAINT | 1 | 1 | | dbo | City | FK_City_Country | FOREIGN_KEY_CONSTRAINT | 1 | 1 | | dbo | MembershipPeriod | chkValidEndDate | CHECK_CONSTRAINT | 1 | 1 | +----------+------------------+--------------------+------------------------+---------------+------------------+
Ce sont les résultats que j'obtiens sur l'une de mes bases de données de test dans mon environnement de développement. Cela renvoie toutes les clés étrangères désactivées et les contraintes CHECK dans la base de données actuelle. Pour vérifier une autre base de données, passez simplement à cette base de données et exécutez-la là-bas.
Notez que lorsque vous désactivez une contrainte, le is_not_trusted
l'indicateur est défini sur 1
, et la contrainte est considérée comme non fiable. Lorsque vous réactivez la contrainte, vous avez la possibilité de la réinitialiser sur approuvée ou de la laisser non approuvée. Pour plus d'informations sur la restauration de la confiance dans une contrainte, consultez Comment restaurer la confiance dans une contrainte de clé étrangère dans SQL Server et Ce que vous devez savoir sur WITH NOCHECK lors de l'activation d'une contrainte CHECK dans SQL Server.