DBCC CHECKCONSTRAINTS (Transact-SQL)

Controlla l'integrità di un vincolo specificato oppure di tutti i vincoli di una tabella specificata nel database corrente.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • table_name | table_id | constraint_name | constraint_id
    Tabella o vincolo da controllare. Se si specifica table_name o table_id, vengono controllati tutti i vincoli della tabella specifica. Quando si specifica constraint_name o constraint_id, viene controllato solo il vincolo specifico. Se non si specifica un identificatore di tabella o un identificatore di vincolo, vengono controllati tutti i vincoli abilitati in tutte le tabelle del database corrente.

    Un nome di vincolo identifica in modo univoco la tabella a cui appartiene. Per ulteriori informazioni, vedere Identificatori.

  • WITH
    Consente di specificare opzioni.

  • ALL_CONSTRAINTS
    Controlla tutti i vincoli abilitati e disabilitati nella tabella se si specifica il nome della tabella o vengono controllate tutte le tabelle. In caso contrario, viene controllato solo il vincolo abilitato. ALL_CONSTRAINTS non ha alcun effetto quando viene specificato un nome di vincolo.

  • ALL_ERRORMSGS
    Restituisce tutte le righe che violano i vincoli della tabella controllata. L'impostazione predefinita corrisponde alle prime 200 righe.

  • NO_INFOMSGS
    Disattiva tutti i messaggi informativi.

Osservazioni

DBCC CHECKCONSTRAINTS crea ed esegue una query per ottenere tutti i vincoli FOREIGN KEY e CHECK di una tabella.

Una query di chiave esterna presenta ad esempio il formato seguente:

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

I dati della query vengono archiviati in una tabella temporanea. Dopo il controllo di tutte le tabelle o di tutti i vincoli richiesti, viene restituito il set di risultati.

DBCC CHECKCONSTRAINTS controlla l'integrità dei vincoli FOREIGN KEY e CHECK, ma non l'integrità delle strutture dei dati su disco di una tabella. Il controllo di tali strutture può essere eseguito mediante DBCC CHECKDB e DBCC CHECKTABLE.

Set di risultati

DBCC CHECKCONSTRAINTS restituisce un set di righe con le colonne seguenti.

Nome colonna

Tipo di dati

Descrizione

Table Name

varchar

Nome della tabella.

Constraint Name

varchar

Nome del vincolo violato.

Where

varchar

Assegnazioni di valori di colonna che identificano una o più righe che violano il vincolo.

È possibile utilizzare il valore di questa colonna in una clausola WHERE di un'istruzione SELECT che esegue una query per individuare le righe che violano il vincolo.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner.

Esempi

A. Controllo di una tabella

Nell'esempio seguente viene controllata l'integrità dei vincoli della tabella Table1 del database 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. Controllo di un vincolo specifico

Nell'esempio seguente viene controllata l'integrità del vincolo CK_ProductCostHistory_EndDate.

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

C. Controllo di tutti i vincoli abilitati e disabilitati in tutte le tabelle

Nell'esempio seguente viene controllata l'integrità di tutti i vincoli abilitati e disabilitati in tutte le tabelle del database corrente.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO