DBCC CHECKCONSTRAINTS (Transact-SQL)

Comprueba la integridad de una restricción especificada o de todas las restricciones de una tabla determinada en la base de datos actual.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

DBCC CHECKCONSTRAINTS
[ 
        ( 
        table_name | table_id | constraint_name | constraint_id 
        )
]
    [ WITH 
        [ { ALL_CONSTRAINTS | ALL_ERRORMSGS } ]
    [ , ] [ NO_INFOMSGS ] 
    ]

Argumentos

  • table_name | table_id | constraint_name | constraint_id
    Es la tabla o la restricción que se va a comprobar. Si no se especifica table_name o table_id, se comprueban todas las restricciones habilitadas en la tabla. Si se especifica constraint_name o constraint_id, solo se comprueba esa restricción. Si no se especifica un identificador de tabla ni un identificador de restricción, se comprueban todas las restricciones habilitadas en todas las tablas de la base de datos actual.

    Un nombre de restricción identifica exclusivamente a la tabla a la que pertenece. Para obtener más información, vea Identificadores.

  • WITH
    Habilita opciones que se van a especificar

  • ALL_CONSTRAINTS
    Comprueba todas las restricciones habilitadas y deshabilitadas de la tabla, si se especifica el nombre de tabla o si se comprueban todas las tablas; de lo contrario, comprueba solo la restricción habilitada. ALL_CONSTRAINTS no tiene ningún efecto cuando se especifica un nombre de restricción.

  • ALL_ERRORMSGS
    Devuelve todas las filas que infringen las restricciones de la tabla comprobada. El valor predeterminado es las 200 primeras filas.

  • NO_INFOMSGS
    Suprime todos los mensajes de información.

Comentarios

DBCC CHECKCONSTRAINTS construye y ejecuta una consulta para todas las restricciones FOREIGN KEY y CHECK en una tabla.

Por ejemplo, una consulta de clave externa tiene el siguiente formato:

SELECT <columns>
FROM <table_being_checked> LEFT JOIN <referenced_table>
    ON <table_being_checked.fkey1> = <referenced_table.pkey1> 
    AND <table_being_checked.fkey2> = <referenced_table.pkey2>
WHERE <table_being_checked.fkey1> IS NOT NULL 
    AND <referenced_table.pkey1> IS NULL
    AND <table_being_checked.fkey2> IS NOT NULL
    AND <referenced_table.pkey2> IS NULL

La consulta de datos se almacena en una tabla temporal. Tras la comprobación de todas las tablas o restricciones solicitadas, se devuelve el conjunto de resultados.

DBCC CHECKCONSTRAINTS comprueba la integridad de las restricciones FOREIGN KEY y CHECK, pero no comprueba la integridad de las estructuras de datos del disco en una tabla. Estas comprobaciones de las estructuras de datos pueden realizarse con DBCC CHECKDB y DBCC CHECKTABLE.

Conjuntos de resultados

DBCC CHECKCONSTRAINTS devuelve un conjunto de filas con las siguientes columnas.

Nombre de columna

Tipo de datos

Descripción

Table Name

varchar

Nombre de la tabla.

Constraint Name

varchar

Nombre de la restricción infringida.

Where

varchar

Asignaciones del valor de columna que identifican la fila o las filas que infringen la restricción.

El valor de esta columna se puede utilizar en una cláusula WHERE de una instrucción SELECT para consultar qué filas infringen la restricción.

Permisos

Debe pertenecer al rol fijo de servidor sysadmin o al rol de base de datos fijo db_owner.

Ejemplos

A. Comprobar una tabla

El ejemplo siguiente comprueba la integridad de la restricción de la tabla Table1 de la base de datos AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
CREATE TABLE Table1 (Col1 int, Col2 char (30));
GO
INSERT INTO Table1 VALUES (100, 'Hello');
GO
ALTER TABLE Table1 WITH NOCHECK ADD CONSTRAINT chkTab1 CHECK (Col1 > 100);
GO
DBCC CHECKCONSTRAINTS(Table1);
GO

B. Comprobar una restricción específica

El ejemplo siguiente comprueba la integridad de la restricción CK_ProductCostHistory_EndDate.

USE AdventureWorks2008R2;
GO
DBCC CHECKCONSTRAINTS ("Production.CK_ProductCostHistory_EndDate");
GO

C. Comprobar todas las restricciones habilitadas y deshabilitadas en todas las tablas

El ejemplo siguiente comprueba la integridad de todas las restricciones habilitadas y deshabilitadas en todas las tablas de la base de datos actual.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO