Si necesita devolver una lista de todos los CHECK
restricciones que se han deshabilitado en una base de datos de SQL Server, puede ejecutar el código T-SQL a continuación.
Ejemplo 1:solo devolver restricciones CHECK deshabilitadas
Esta consulta devuelve solo el CHECK
deshabilitado restricciones en la base de datos actual. Devuelve el nombre de la restricción, el nombre de la tabla a la que se aplica y la definición de la restricción.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Resultado:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Esto consulta el sys.check_constraints
vista del sistema. Sabemos que solo devuelve restricciones deshabilitadas porque WHERE
cláusula especifica solo las filas que tienen el is_disabled
columna establecida en 1
.
Si desea devolver todo habilitado CHECK
restricciones, simplemente cambie el 1
a 0
.
Ejemplo 2:devolver todas las restricciones CHECK
La siguiente consulta devuelve todos CHECK
restricciones para la base de datos actual (no solo las deshabilitadas). Esta vez devuelvo el is_disabled
columna para demostrar de dónde obtuvo su valor la consulta anterior:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Resultado:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
También he incluido el is_not_trusted
columna en esta consulta. Es prudente tener en cuenta este valor, ya que una restricción puede seguir sin ser de confianza incluso después de que se haya vuelto a habilitar. Para obtener una discusión detallada (y ejemplos) de este indicador, consulte Lo que debe saber sobre WITH NOCHECK al habilitar una restricción CHECK en SQL Server.