DBCC CHECKCONSTRAINTS (Transact-SQL)

Inspeciona a integridade de uma restrição especificada ou de todas as restrições em uma tabela especificada no banco de dados atual.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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
    É a tabela ou restrição que será verificada. Quando table_name ou table_id for especificado, todas as restrições habilitadas na tabela serão verificadas. Quando constraint_name ou constraint_id for especificado, somente essa restrição será verificada. Se nem um identificador de tabela nem um identificador de restrição for especificado, todas as restrições habilitadas em todas as tabelas do banco de dados atual serão verificadas.

    Um nome de restrição identifica exclusivamente a tabela à qual ela pertence. Para obter mais informações, consulte Identificadores.

  • WITH
    Permite que as opções sejam especificadas

  • ALL_CONSTRAINTS
    Verificará 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. ALL_CONSTRAINTS não tem nenhum efeito quando um nome de restrição é especificado.

  • ALL_ERRORMSGS
    Retorna todas as linhas que violam restrições na tabela verificada. O padrão inclui as primeiras 200 linhas.

  • NO_INFOMSGS
    Suprime todas as mensagens informativas.

Comentários

DBCC CHECKCONSTRAINTS constrói e executa uma consulta para todas as restrições FOREIGN KEY e CHECK de uma tabela.

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

Os dados de consulta são armazenados em uma tabela temporária. Depois que todas as tabelas ou restrições solicitadas forem verificadas, o conjunto de resultados será retornado.

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. Essas verificações de estrutura de dados podem ser executadas com o uso de DBCC CHECKDB e DBCC CHECKTABLE.

Conjuntos de resultados

DBCC CHECKCONSTRAINTS retorna um conjunto de linhas com as colunas a seguir.

Nome da coluna

Tipo de dados

Descrição

Table Name

varchar

O nome da tabela.

Constraint Name

varchar

Nome da restrição que é violada.

Where

varchar

Atribuições de valor de coluna que identificam uma ou mais linhas que violam a restrição.

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.

Permissões

Requer associação à função de servidor fixa sysadmin ou à função de banco de dados fixa db_owner.

Exemplos

A. Verificando uma tabela

O exemplo a seguir verifica a integridade de restrição da tabela Table1 do banco de dados AdventureWorks.

USE AdventureWorks;
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. Verificando uma restrição específica

O exemplo a seguir verifica a integridade da restrição CK_ProductCostHistory_EndDate.

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

C. Verificando todas as restrições habilitadas e desabilitadas em todas as tabelas

O exemplo a seguir verifica a integridade de todas as restrições habilitadas e desabilitadas em todas as tabelas do banco de dados atual.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO