DBCC CHECKCONSTRAINTS (Transact-SQL)
Controlla l'integrità di un vincolo specificato oppure di tutti i vincoli di una tabella specificata nel database corrente.
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
Vedere anche