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

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Inspeciona a integridade de uma restrição especificada ou de todas as restrições em uma tabela especificada no banco de dados atual.Checks the integrity of a specified constraint or all constraints on a specified table in the current database.

Ícone de link do tópico Convenções de sintaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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
É a tabela ou restrição que será verificada.Is the table or constraint to be checked. Quando table_name ou table_id for especificado, todas as restrições habilitadas na tabela serão verificadas.When table_name or table_id is specified, all enabled constraints on that table are checked. Quando constraint_name ou constraint_id for especificado, somente essa restrição será verificada.When constraint_name or constraint_id is specified, only that constraint is checked. Se nem um identificador de tabela ou um identificador de restrição for especificado, todas as restrições habilitadas em todas as tabelas no banco de dados atual serão verificadas.If neither a table identifier nor a constraint identifier is specified, all enabled constraints on all tables in the current database are checked.
Um nome de restrição identifica exclusivamente a tabela à qual ela pertence.A constraint name uniquely identifies the table to which it belongs. Para obter mais informações, consulte Database Identifiers.For more information, see Database Identifiers.

comWITH
Permite que opções sejam especificadas.Enables options to be specified.

ALL_CONSTRAINTSALL_CONSTRAINTS
Verifica todas as restrições habilitadas e desabilitadas na tabela se o nome da tabela for especificado ou se todas as tabelas forem verificadas. Caso contrário, verificará somente a restrição 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 não tem nenhum efeito quando um nome de restrição é especificado.ALL_CONSTRAINTS has no effect when a constraint name is specified.

ALL_ERRORMSGSALL_ERRORMSGS
Retorna todas as linhas que violam restrições na tabela verificada.Returns all rows that violate constraints in the table that is checked. O padrão inclui as primeiras 200 linhas.The default is the first 200 rows.

NO_INFOMSGSNO_INFOMSGS
Suprime todas as mensagens informativas.Suppresses all informational messages.

RemarksRemarks

DBCC CHECKCONSTRAINTS constrói e executa uma consulta para todas as restrições FOREIGN KEY e CHECK de uma tabela.DBCC CHECKCONSTRAINTS constructs and executes a query for all FOREIGN KEY constraints and CHECK constraints on a table.

Por exemplo, uma consulta de chave estrangeira tem o seguinte 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  

Os dados de consulta são armazenados em uma tabela temporária.The query data is stored in a temp table. Depois que todas as tabelas e restrições solicitadas forem verificadas, o conjunto de resultados será retornado.After all requested tables or constraints have been checked, the result set is returned. DBCC CHECKCONSTRAINTS verifica a integridade das restrições FOREIGN KEY e CHECK, mas não verifica a integridade das estruturas de dados em disco de uma tabela.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. Essas verificações de estrutura de dados podem ser executadas usando DBCC CHECKDB e DBCC CHECKTABLE.These data structure checks can be performed by using DBCC CHECKDB and DBCC CHECKTABLE.

Aplica-se a: SQL Server 2016 (13.x)SQL Server 2016 (13.x) e posteriorApplies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later

Se table_name ou table_id for especificado e estiver habilitado para controle de versão do sistema, DBCC CHECKCONSTRAINTS também executará as verificações de consistência de dados temporais na tabela 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. Quando NO_INFOMSGS não for especificado, esse comando retornará cada violação de consistência na saída em uma linha separada.When NO_INFOMSGS is not specified, this command will return each consistency violation in the output on a separate line. O formato da saída será ([pkcol1], [pkcol2]..) = (<pkcol1_value>, <pkcol2_value>...) AND <o que há de errado com o registro da tabela temporal>.The format of the output will be ([pkcol1], [pkcol2]..) = (<pkcol1_value>, <pkcol2_value>...) AND <what is wrong with temporal table record>.

VerificarCheck Informações adicionais na saída se a verificação falharAdditional info in output if check failed
PeriodEndColumn ≥ PeriodStartColumn (current)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 (current, history)PeriodEndColumn ≥ PeriodStartColumn (current, history) [sys_start] = '{0}' AND [sys_end] = '{1}'[sys_start] = '{0}' AND [sys_end] = '{1}'
PeriodStartColumn < current_utc_time (current)PeriodStartColumn < current_utc_time (current) [sys_start] = '{0}' AND SYSUTCTIME[sys_start] = '{0}' AND SYSUTCTIME
PeriodEndColumn < current_utc_time (history)PeriodEndColumn < current_utc_time (history) [sys_end] = '{0}' AND SYSUTCTIME[sys_end] = '{0}' AND SYSUTCTIME
SobreposiçõesOverlaps (sys_start1, sys_end1) , (sys_start2, sys_end2) para dois registros sobrepostos.(sys_start1, sys_end1) , (sys_start2, sys_end2) for two overlapping records.

Se houver mais de 2 registros sobrepostos, a saída terá várias linhas e cada uma mostrará um par de sobreposições.If there are more than 2 overlapping records, output will have multiple rows each showing a pair of overlaps.

Não é possível especificar constraint_name ou constraint_id para executar somente verificações de consistência temporal.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 retornam um conjunto de linhas com as colunas a seguir.DBCC CHECKCONSTRAINTS return a rowset with the following columns.

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
Nome da tabelaTable Name varcharvarchar Nome da tabela.Name of the table.
Constraint NameConstraint Name varcharvarchar Nome da restrição que é violada.Name of the constraint that is violated.
WhereWhere varcharvarchar Atribuições de valor de coluna que identificam as linhas que violam a restrição.Column value assignments that identify the row or rows violating the constraint.

O valor nesta coluna pode ser usado em uma cláusula WHERE de uma instrução SELECT que consulta as linhas que violam a restrição.The value in this column can be used in a WHERE clause of a SELECT statement querying for rows that violate the constraint.

PermissõesPermissions

Exige associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner .Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

ExemplosExamples

A.A. Verificando uma tabelaChecking a table

O exemplo a seguir verifica a integridade de restrição da tabela Table1 do banco de dados 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. Verificando uma restrição específicaChecking a specific constraint

O exemplo a seguir verifica a integridade da restrição 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. Verificando todas as restrições habilitadas e desabilitadas em todas as tabelasChecking all enabled and disabled constraints on all tables

O exemplo a seguir verifica a integridade de todas as restrições habilitadas e desabilitadas em todas as tabelas do banco de dados atual.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 TambémSee Also

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