DBCC CHECKCONSTRAINTS (Transact-SQL)

Aktualisiert: 05. Dezember 2005

Überprüft die Integrität einer angegebenen Einschränkung oder aller Einschränkungen einer angegebenen Tabelle in der aktuellen Datenbank.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • table_name | table_id | constraint_name | constraint_id
    Die zu überprüfende Tabelle oder Einschränkung. Wenn weder table_name noch table_id angegeben ist, werden alle aktivierten Einschränkungen der Tabelle überprüft. Wenn constraint_name oder constraint_id angegeben ist, wird nur diese Einschränkung überprüft. Wenn weder ein Tabellenbezeichner noch ein Einschränkungsbezeichner angegeben ist, werden alle aktivierten Einschränkungen für alle Tabellen in der aktuellen Datenbank überprüft.

    Durch den Einschränkungsnamen wird die zugehörige Tabelle eindeutig identifiziert. Weitere Informationen finden Sie unter Bezeichner.

  • WITH
    Aktiviert das Festlegen von Optionen
  • ALL_CONSTRAINTS
    Überprüft alle aktivierten und deaktivierten Einschränkungen der Tabelle, wenn der Tabellenname angegeben ist oder wenn alle Tabellen überprüft werden. Andernfalls wird nur die aktivierte Einschränkung überprüft. ALL_CONSTRAINTS hat keine Wirkung, wenn ein Einschränkungsname angegeben ist.
  • ALL_ERRORMSGS
    Gibt alle Zeilen zurück, die den Einschränkungen der überprüften Tabelle nicht entsprechen. In der Standardeinstellung sind dies die ersten 200 Zeilen.
  • NO_INFOMSGS
    Alle Informationsmeldungen werden unterdrückt.

Resultsets

DBCC CHECKCONSTRAINTS gibt ein Rowset mit folgenden Spalten zurück.

Spaltenname Datentyp Beschreibung

Table Name

varchar

Der Name der Tabelle.

Constraint Name

varchar

Name der verletzten Einschränkung.

Where

varchar

Spaltenwertzuweisungen, die die Zeile bzw. die Zeilen, die die Einschränkung verletzen, identifizieren.

Der Wert in dieser Spalte kann in einer WHERE-Klausel einer SELECT-Anweisung verwendet werden, die Zeilen abfragt, die die Einschränkung verletzen.

Hinweise

DBCC CHECKCONSTRAINTS erstellt für alle FOREIGN KEY- und CHECK-Einschränkungen einer Tabelle eine Abfrage und führt sie aus.

Eine FOREIGN KEY-Abfrage sieht beispielsweise folgendermaßen aus:

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

Die Abfragedaten werden in einer temporären Tabelle gespeichert. Wenn alle geforderten Tabellen oder Einschränkungen überprüft wurden, wird das Resultset zurückgegeben.

DBCC CHECKCONSTRAINTS prüft die Integrität von FOREIGN KEY- und CHECK-Einschränkungen, jedoch nicht die Integrität der auf dem Datenträger gespeicherten Datenstrukturen einer Tabelle. Diese Datenstrukturprüfungen können mit DBCC CHECKDB und DBCC CHECKTABLE ausgeführt werden.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner.

Beispiele

A. Überprüfen einer Tabelle

Im folgenden Beispiel wird die Einschränkungsintegrität der Table1-Tabelle in der AdventureWorks-Datenbank überprüft.

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. Überprüfen einer bestimmten Einschränkung

Im folgenden Beispiel wird die Integrität der CK_ProductCostHistory_EndDate-Einschränkung im Production-Schema überprüft.

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

C. Überprüfen aller aktivierten und deaktivierten Einschränkungen für alle Tabellen

Im folgenden Beispiel wird die Integrität aller aktivierten und deaktivierten Einschränkungen für alle Tabellen in der aktuellen Datenbank überprüft.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO

Siehe auch

Verweis

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

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

05. Dezember 2005

Geänderter Inhalt:
  • Das Syntaxdiagramm wurde geändert, um anzuzeigen, dass NO_INFOMSGS in der WITH-Klausel ohne { ALL_CONSTRAINTS | ALL_ERRORMSGS } angegeben werden kann.