DBCC CHECKIDENT (Transact-SQL)
Überprüft den aktuellen Identitätswert der angegebenen Tabelle und korrigiert ihn gegebenenfalls. Sie können DBCC CHECKIDENT auch verwenden, um manuell einen neuen aktuellen Identitätswert für die Identitätsspalte festzulegen.
Syntax
DBCC CHECKIDENT
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Argumente
table_name
Der Name der Tabelle, deren aktueller Identitätswert überprüft werden soll. Die angegebene Tabelle muss eine Identitätsspalte enthalten. Tabellennamen müssen den Regeln für Bezeichner entsprechen.NORESEED
Gibt an, dass der aktuelle Identitätswert nicht geändert werden soll.RESEED
Gibt an, dass der aktuelle Identitätswert geändert werden soll.new_reseed_value
Der neue Wert, der als aktueller Wert der Identitätsspalte verwendet werden soll.WITH NO_INFOMSGS
Alle Informationsmeldungen werden unterdrückt.
Hinweise
Die spezifischen Korrekturen, die am aktuellen Identitätswert vorgenommen werden, sind abhängig von den Parameterangaben.
DBCC CHECKIDENT-Befehl |
Durchgeführte Identitätskorrekturen |
---|---|
DBCC CHECKIDENT ( table_name, NORESEED ) |
Der aktuelle Identitätswert wird nicht zurückgesetzt. DBCC CHECKIDENT gibt den aktuellen Identitätswert und den aktuellen maximalen Wert der Identitätsspalte zurück. Wenn die beiden Werte nicht gleich sind, sollten Sie den Identitätswert zurücksetzen, um mögliche Fehler oder Lücken in der Wertesequenz zu vermeiden. |
DBCC CHECKIDENT (table_name) oder DBCC CHECKIDENT ( table_name, RESEED ) |
Wenn der aktuelle Identitätswert für eine Tabelle kleiner ist als der maximale in der Identitätsspalte gespeicherte Identitätswert, wird er auf den maximalen Wert in der Identitätsspalte zurückgesetzt. |
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value ) |
Der aktuelle Identitätswert wird auf new_reseed_value festgelegt. Wenn seit Erstellen der Tabelle keine Zeilen eingefügt wurden oder wenn alle Zeilen mithilfe der TRUNCATE TABLE-Anweisung entfernt wurden, verwendet die erste Spalte, die nach Ausführung von DBCC CHECKIDENT eingefügt wird, new_reseed_value als Identität. Andernfalls wird für die nächste eingefügte Zeile new_reseed_value + aktuelles Inkrement verwendet. Bei einer nicht leeren Tabelle kann das Festlegen des Identitätswertes auf eine Zahl, die kleiner ist als der maximale Wert in der Identitätsspalte, zu einer der folgenden Bedingungen führen:
|
Ausnahmen
In der folgenden Tabelle sind Bedingungen aufgeführt, unter denen DBCC CHECKIDENT den aktuellen Identitätswert nicht automatisch zurücksetzt. Außerdem werden Methoden für das Zurücksetzen des Wertes bereitgestellt.
Bedingung |
Methoden zum Zurücksetzen |
---|---|
Der aktuelle Identitätswert ist größer als der maximale Wert in der Tabelle. |
Oder
|
Alle Zeilen werden aus der Tabelle gelöscht. |
Führen Sie DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) aus, wobei new_reseed_value auf den gewünschten Anfangswert festgelegt wird. |
Ändern des Ausgangswerts
Der Ausgangswert ist der Wert, der für die erste in die Tabelle geladene Zeile in eine Identitätsspalte eingefügt wird. Alle nachfolgenden Zeilen enthalten den aktuellen Identitätswert zuzüglich des inkrementellen Werts, wobei der aktuelle Identitätswert der letzte Identitätswert ist, der für die Tabelle oder Sicht generiert wurde. Weitere Informationen finden Sie unter Erstellen und Ändern von Bezeichnerspalten.
Mit DBCC CHECKIDENT können Sie folgende Aufgaben nicht ausführen:
Ändern des ursprünglichen Ausgangswerts, der für eine Identitätsspalte angegeben wurde, als die Tabelle oder die Sicht erstellt wurde.
Zuweisen von neuen Ausgangswerten zu vorhandenen Zeilen in einer Tabelle oder Sicht.
Um den ursprünglichen Ausgangswert zu ändern und vorhandenen Zeilen neue Ausgangswerte zuzuweisen, müssen Sie die Identitätsspalte löschen und sie unter Angabe des neuen Ausgangswerts neu erstellen. Wenn die Tabelle Daten enthält, werden die ID-Nummern zu den vorhandenen Zeilen mit den angegebenen Ausgangswerten und inkrementellen Werten hinzugefügt. Die Reihenfolge, in der die Zeilen aktualisiert werden, ist nicht sichergestellt.
Resultsets
Unabhängig davon, ob eine der Optionen für eine Tabelle, die eine Identitätsspalte enthält, angegeben wird, gibt DBCC CHECKIDENT Folgendes zurück (die Werte können variieren):
Checking identity information: current identity value '290', current column value '290'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Berechtigungen
Bei dem Aufrufer muss es sich um den Besitzer der Tabelle oder um ein Mitglied der festen Serverrolle sysadmin, der festen Datenbankrolle db_owner oder der festen Datenbankrolle db_ddladmin handeln.
Beispiele
A. Zurücksetzen des aktuellen Identitätswertes, sofern dies erforderlich ist
Im folgenden Beispiel wird, falls erforderlich, der aktuelle Identitätswert der Tabelle Employee in der AdventureWorks-Datenbank zurückgesetzt.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee");
GO
B. Anzeigen des aktuellen Identitätswertes
Im folgenden Beispiel wird der aktuelle Identitätswert in der Tabelle Employee der AdventureWorks-Datenbank angezeigt. Ein fehlerhafter Identitätswert wird jedoch nicht korrigiert.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", NORESEED);
GO
C. Festlegen des aktuellen Identitätswertes auf einen neuen Wert
Im folgenden Beispiel wird der aktuelle Identitätswert in der EmployeeID-Spalte in der Employee-Tabelle auf einen Wert von 300 festgelegt. Da die Tabelle bereits Zeilen enthält, wird für die nächste eingefügte Zeile der Wert 301 verwendet (der aktuelle Identitätswert plus 1), d. h. der aktuelle, für die Spalte definierte inkrementelle Wert.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 300);
GO