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

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Controlla l'integrità di un vincolo specificato oppure di tutti i vincoli di una tabella specificata nel database corrente.Checks the integrity of a specified constraint or all constraints on a specified table in the current database.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

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

ArgomentiArguments

TABLE_NAME | table_id | constraint_name | constraint_idtable_name | table_id | constraint_name | constraint_id
Tabella o vincolo da controllare.Is the table or constraint to be checked. Quando table_name o table_id è specificato, vengono controllati tutti i vincoli abilitati in tale tabella.When table_name or table_id is specified, all enabled constraints on that table are checked. Quando constraint_name o constraint_id è specificato, solo tale vincolo viene controllato.When constraint_name or constraint_id is specified, only that constraint is checked. 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.If neither a table identifier nor a constraint identifier is specified, all enabled constraints on all tables in the current database are checked.
Un nome di vincolo identifica in modo univoco la tabella a cui appartiene.A constraint name uniquely identifies the table to which it belongs. Per altre informazioni, vedere Identificatori del database.For more information, see Database Identifiers.

conWITH
Consente di specificare opzioni.Enables options to be specified.

ALL_CONSTRAINTSALL_CONSTRAINTS
Controlla tutti i vincoli abilitati e disabilitati della tabella se viene specificato il nome della tabella o se vengono controllate tutte le tabelle. In caso contrario, viene controllato solo il vincolo abilitato.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 non ha alcun effetto quando viene specificato un nome di vincolo.ALL_CONSTRAINTS has no effect when a constraint name is specified.

ALL_ERRORMSGSALL_ERRORMSGS
Restituisce tutte le righe che violano i vincoli della tabella controllata.Returns all rows that violate constraints in the table that is checked. Per impostazione predefinita vengono restituite le prime 200 righe.The default is the first 200 rows.

NO_INFOMSGSNO_INFOMSGS
Disattiva tutti i messaggi informativi.Suppresses all informational messages.

OsservazioniRemarks

DBCC CHECKCONSTRAINTS consente di creare ed eseguire una query per ottenere tutti i vincoli FOREIGN KEY e CHECK di una tabella.DBCC CHECKCONSTRAINTS constructs and executes a query for all FOREIGN KEY constraints and CHECK constraints on a table.

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

I dati della query vengono archiviati in una tabella temporanea.The query data is stored in a temp table. Dopo che tutte le tabelle o tutti i vincoli richiesti sono stati controllati, viene restituito il set di risultati.After all requested tables or constraints have been checked, the result set is returned. 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.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. Questi controlli struttura di dati possono essere eseguiti tramite DBCC CHECKDB e DBCC CHECKTABLE.These data structure checks can be performed by using DBCC CHECKDB and DBCC CHECKTABLE.

Si applica a: SQL Server 2016SQL Server 2016 tramite SQL Server 2017SQL Server 2017Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017

Se table_name o table_id specificato e viene abilitata per il controllo delle versioni di sistema, DBCC CHECKCONSTRAINTS esegue inoltre controlli di coerenza sui dati temporali per la tabella specificata.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 non viene specificato, questo comando restituisce ogni violazione coerenza nell'output in una riga separata.When NO_INFOMSGS is not specified, this command will return each consistency violation in the output on a separate line. Il formato dell'output sarà ([pkcol1], [pkcol2]...) = (<pkcol1_value >, <pkcol2_value >...) E <qual è il record della tabella temporale >.The format of the output will be ([pkcol1], [pkcol2]..) = (<pkcol1_value>, <pkcol2_value>…) AND <what is wrong with temporal table record>.

ControllaCheck Informazioni aggiuntive nell'output se il controllo non riuscitoAdditional info in output if check failed
PeriodEndColumn ≥ PeriodStartColumn (corrente)PeriodEndColumn ≥ PeriodStartColumn (current) [sys_end] = '{0}' e MAX(DATETIME2) = "9999-12-31 23:59:59.99999'[sys_end] = '{0}' AND MAX(DATETIME2) = '9999-12-31 23:59:59.99999'
PeriodEndColumn ≥ PeriodStartColumn (corrente, cronologia)PeriodEndColumn ≥ PeriodStartColumn (current, history) [sys_start] = '{0}' e [sys_end] = '\{1 \}'[sys_start] = '{0}' AND [sys_end] = '{1}'
PeriodStartColumn < current_utc_time (corrente)PeriodStartColumn < current_utc_time (current) [sys_start] = '{0}' e SYSUTCTIME[sys_start] = '{0}' AND SYSUTCTIME
PeriodEndColumn < current_utc_time (cronologia)PeriodEndColumn < current_utc_time (history) [sys_end] = '{0}' e SYSUTCTIME[sys_end] = '{0}' AND SYSUTCTIME
Si sovrapponeOverlaps (sys_start1, sys_end1), (sys_start2, sys_end2) per due record di sovrapposizione.(sys_start1, sys_end1) , (sys_start2, sys_end2) for two overlapping records.

Se sono presenti più di 2 record sovrapposti, output includerà più righe di ogni coppia di sovrapposizioni di visualizzazione.If there are more than 2 overlapping records, output will have multiple rows each showing a pair of overlaps.

Non è possibile specificare constraint_name o constraint_id per eseguire verifiche di coerenza temporale solo.There is no way to specify constraint_name or constraint_id in order to run only temporal consistency checks.

Set di risultatiResult Sets

DBCC CHECKCONSTRAINTS restituisce un set di righe con le colonne seguenti.DBCC CHECKCONSTRAINTS return a rowset with the following columns.

Nome colonnaColumn name Tipo di datiData type DescriptionDescription
Nome tabellaTable Name varcharvarchar Nome della tabella.Name of the table.
Constraint NameConstraint Name varcharvarchar Nome del vincolo violato.Name of the constraint that is violated.
WhereWhere varcharvarchar Assegnazioni di valori di colonna che identificano una o più righe che violano il vincolo.Column value assignments that identify the row or rows violating the constraint.

È 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.The value in this column can be used in a WHERE clause of a SELECT statement querying for rows that violate the constraint.

PermissionsPermissions

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o al ruolo predefinito del database db_owner .Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

EsempiExamples

A.A. Controllo di una tabellaChecking a table

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

Nell'esempio seguente viene controllata l'integrità del vincolo 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. Controllo di tutti i vincoli abilitati e disabilitati in tutte le tabelleChecking all enabled and disabled constraints on all tables

Nell'esempio seguente viene controllata l'integrità di tutti i vincoli abilitati e disabilitati di tutte le tabelle nel database corrente.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  

Vedere ancheSee Also

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