DBCC CHECKCONSTRAINTS (Transact-SQL)

Data aggiornamento: 5 dicembre 2005

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 che si desidera controllare. Se si specifica table_name o table_id, vengono controllati tutti i vincoli attivati della tabella specificata. Se viene specificato constraint_name o constraint_id, viene controllato solo tale vincolo. Se non viene specificato né un identificatore di tabella né un identificatore di vincolo, vengono controllati tutti i vincoli attivati di tutte le tabelle nel 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 attivati e disattivati della tabella se viene specificato il nome della tabella o se vengono controllate tutte le tabelle. In caso contrario, viene controllato solo il vincolo attivato. 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. Per impostazione predefinita vengono restituite le prime 200 righe.
  • NO_INFOMSGS
    Disattiva tutti i messaggi informativi.

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.

Osservazioni

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

Una query di chiave esterna, ad esempio, presenta il seguente 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

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

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

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 nel 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 nello schema Production.

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

C. Controllo di tutti i vincoli attivati e disattivati di tutte le tabelle

Nell'esempio seguente viene controllata l'integrità di tutti i vincoli attivati e disattivati di tutte le tabelle nel database corrente.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO

Vedere anche

Riferimento

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

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

5 dicembre 2005

Contenuto modificato:
  • Modifica del diagramma della sintassi per indicare la possibilità di specificare NO_INFOMSGS nella clausola WITH senza { ALL_CONSTRAINTS | ALL_ERRORMSGS }.