DBCC CHECKCONSTRAINTS (Transact-SQL)DBCC CHECKCONSTRAINTS (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Comprueba la integridad de una restricción especificada o de todas las restricciones de una tabla determinada en la base de datos actual.Checks the integrity of a specified constraint or all constraints on a specified table in the current database.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

table_name | table_id | constraint_name | constraint_idtable_name | table_id | constraint_name | constraint_id
Es la tabla o la restricción que se va a comprobar.Is the table or constraint to be checked. Si no se especifica table_name o table_id, se comprueban todas las restricciones habilitadas en la tabla.When table_name or table_id is specified, all enabled constraints on that table are checked. Si se especifica constraint_name o constraint_id, se comprueba solo esa restricción.When constraint_name or constraint_id is specified, only that constraint is checked. 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.If neither a table identifier nor a constraint identifier is specified, all enabled constraints on all tables in the current database are checked.
Un nombre de restricción identifica exclusivamente a la tabla a la que pertenece.A constraint name uniquely identifies the table to which it belongs. Para obtener más información, vea Database Identifiers.For more information, see Database Identifiers.

porWITH
Habilita la especificación de opciones.Enables options to be specified.

ALL_CONSTRAINTSALL_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.Checks all enabled and disabled constraints on the table if the table name is specified or if all tables are checked; otherwise, checks only the enabled constraint. ALL_CONSTRAINTS no tiene ningún efecto cuando se especifica un nombre de restricción.ALL_CONSTRAINTS has no effect when a constraint name is specified.

ALL_ERRORMSGSALL_ERRORMSGS
Devuelve todas las filas que infringen las restricciones de la tabla comprobada.Returns all rows that violate constraints in the table that is checked. El valor predeterminado es las 200 primeras filas.The default is the first 200 rows.

NO_INFOMSGSNO_INFOMSGS
Suprime todos los mensajes de información.Suppresses all informational messages.

NotasRemarks

DBCC CHECKCONSTRAINTS construye y ejecuta una consulta para todas las restricciones FOREIGN KEY y CHECK en una tabla.DBCC CHECKCONSTRAINTS constructs and executes a query for all FOREIGN KEY constraints and CHECK constraints on a table.

Por ejemplo, una consulta de clave externa tiene el siguiente formato:For example, a foreign key query is of the following form:

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.The query data is stored in a temp table. Tras la comprobación de todas las tablas o restricciones solicitadas, se devuelve el conjunto de resultados.After all requested tables or constraints have been checked, the result set is returned. 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.DBCC CHECKCONSTRAINTS checks the integrity of FOREIGN KEY and CHECK constraints but does not check the integrity of the on-disk data structures of a table. Estas comprobaciones de las estructuras de datos pueden realizarse con DBCC CHECKDB y DBCC CHECKTABLE.These data structure checks can be performed by using DBCC CHECKDB and DBCC CHECKTABLE.

Válido para SQL Server 2016 (13.x)SQL Server 2016 (13.x) y versiones posteriores.Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later

Si se especifica table_name o table_id y está habilitado para el control de versiones del sistema, DBCC CHECKCONSTRAINTS también realiza comprobaciones de coherencia de datos temporales en la tabla especificada.If table_name or table_id is specified and it is enabled for system versioning, DBCC CHECKCONSTRAINTS also performs temporal data consistency checks on the specified table. Si no se especifica NO_INFOMSGS, este comando devolverá cada infracción de coherencia en la salida en una línea independiente.When NO_INFOMSGS is not specified, this command will return each consistency violation in the output on a separate line. Este será el formato del resultado: ([pkcol1], [pkcol2]..) = (<pkcol1_value>, <pkcol2_value>...) AND <problema con el registro de tabla temporal>.The format of the output will be ([pkcol1], [pkcol2]..) = (<pkcol1_value>, <pkcol2_value>...) AND <what is wrong with temporal table record>.

ComprobaciónCheck Información adicional en la salida si se ha producido un error en la comprobaciónAdditional info in output if check failed
PeriodEndColumn ≥ PeriodStartColumn (actual)PeriodEndColumn ≥ PeriodStartColumn (current) [sys_end] = '{0}' AND MAX(DATETIME2) = '9999-12-31 23:59:59.99999'[sys_end] = '{0}' AND MAX(DATETIME2) = '9999-12-31 23:59:59.99999'
PeriodEndColumn ≥ PeriodStartColumn (actual, historial)PeriodEndColumn ≥ PeriodStartColumn (current, history) [sys_start] = '{0}' AND [sys_end] = '{1}'[sys_start] = '{0}' AND [sys_end] = '{1}'
PeriodStartColumn < current_utc_time (actual)PeriodStartColumn < current_utc_time (current) [sys_start] = '{0}' AND SYSUTCTIME[sys_start] = '{0}' AND SYSUTCTIME
PeriodEndColumn < current_utc_time (historial)PeriodEndColumn < current_utc_time (history) [sys_end] = '{0}' AND SYSUTCTIME[sys_end] = '{0}' AND SYSUTCTIME
SuperposicionesOverlaps (sys_start1, sys_end1) , (sys_start2, sys_end2) para dos registros que se superponen.(sys_start1, sys_end1) , (sys_start2, sys_end2) for two overlapping records.

Si hay más de dos registros que se superponen, la salida tendrá varias filas, cada una de las cuales mostrará un par de superposiciones.If there are more than 2 overlapping records, output will have multiple rows each showing a pair of overlaps.

No hay ninguna manera de especificar constraint_name o constraint_id para ejecutar únicamente comprobaciones de coherencia temporales.There is no way to specify constraint_name or constraint_id in order to run only temporal consistency checks.

Conjuntos de resultadosResult Sets

DBCC CHECKCONSTRAINTS devuelve un conjunto de filas con las siguientes columnas.DBCC CHECKCONSTRAINTS return a rowset with the following columns.

Nombre de columnaColumn name Tipo de datosData type DescripciónDescription
Nombre de tablaTable Name varcharvarchar Nombre de la tabla.Name of the table.
Constraint NameConstraint Name varcharvarchar Nombre de la restricción infringida.Name of the constraint that is violated.
WhereWhere varcharvarchar Asignaciones del valor de columna que identifican la fila o las filas que infringen la restricción.Column value assignments that identify the row or rows violating the constraint.

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.The value in this column can be used in a WHERE clause of a SELECT statement querying for rows that violate the constraint.

PermisosPermissions

Debe pertenecer al rol fijo de servidor sysadmin o al rol fijo de base de datos db_owner .Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

EjemplosExamples

A.A. Comprobar una tablaChecking a table

El ejemplo siguiente comprueba la integridad de la restricción de la tabla Table1 de la base de datos AdventureWorks.The following example checks the constraint integrity of the table Table1 in the AdventureWorks database.

USE AdventureWorks2012;  
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.B. Comprobar una restricción específicaChecking a specific constraint

El ejemplo siguiente comprueba la integridad de la restricción CK_ProductCostHistory_EndDate.The following example checks the integrity of the CK_ProductCostHistory_EndDate constraint.

USE AdventureWorks2012;  
GO  
DBCC CHECKCONSTRAINTS ('Production.CK_ProductCostHistory_EndDate');  
GO  

C.C. Comprobar todas las restricciones habilitadas y deshabilitadas en todas las tablasChecking all enabled and disabled constraints on all tables

El ejemplo siguiente comprueba la integridad de todas las restricciones habilitadas y deshabilitadas en todas las tablas de la base de datos actual.The following example checks the integrity of all enabled and disabled constraints on all tables in the current database.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;  
GO  

Consulte tambiénSee Also

DBCC CHECKDB (Transact-SQL)DBCC CHECKDB (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)DBCC CHECKTABLE (Transact-SQL)
DBCC (Transact-SQL)DBCC (Transact-SQL)