Aquí hay un código T-SQL que puede usar para obtener una lista de todas las restricciones de CHECK y clave externa en una base de datos de SQL Server.
En el siguiente ejemplo, hago un UNION
en dos consultas de base de datos. Uno consulta sys.foreign_keys
para claves foráneas deshabilitadas, y las otras consultas sys.check_constraints
para restricciones CHECK deshabilitadas.
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;
Resultado:
+----------+------------------+--------------------+------------------------+---------------+------------------+ | 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 | +----------+------------------+--------------------+------------------------+---------------+------------------+
Estos son los resultados que obtengo en una de mis bases de datos de prueba en mi entorno de desarrollo. Esto devuelve todas las claves foráneas deshabilitadas y las restricciones CHECK en la base de datos actual. Para verificar otra base de datos, simplemente cambie a esa base de datos y ejecútela allí.
Tenga en cuenta que cuando deshabilita una restricción, el is_not_trusted
la bandera está establecida en 1
y la restricción se considera que no es de confianza. Cuando vuelve a habilitar la restricción, tiene la opción de restablecerla a confiable o dejarla como no confiable. Para obtener más información sobre cómo restaurar la confianza en una restricción, consulte Cómo restaurar la confianza en una restricción de clave externa en SQL Server y lo que debe saber sobre WITH NOCHECK al habilitar una restricción CHECK en SQL Server.