DBCC CHECKIDENT (Transact-SQL)
Aktualisiert: 17. November 2008
Ü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.
Transact-SQL-Syntaxkonventionen
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.
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.
Ä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 in der Tabelle enthalten sind, 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.
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 der Erstellung der Tabelle keine Zeilen hinzugefügt wurden, oder mithilfe der TRUNCATE TABLE-Anweisung alle Zeilen entfernt wurden, wird für die erste Zeile nach der Ausführung von DBCC CHECKIDENT new_reseed_value als Identität verwendet. 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ätswerts 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 Werts 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. |
Berechtigungen
Der Aufrufer muss Besitzer der Tabelle oder ein Mitglied der festen Serverrolle sysadmin, der festen Datenbankrolle db_owner oder der festen Datenbankrolle db_ddladmin sein.
Beispiele
A. Zurücksetzen des aktuellen Identitätswerts, sofern dies erforderlich ist
Im folgenden Beispiel wird, sofern 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ätswerts
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ätswerts auf 30
Im folgenden Beispiel wird der aktuelle Identitätswert in der EmployeeID
-Spalte in der Employee
-Tabelle auf den Wert 300 festgelegt. Da in der Tabelle bereits Zeilen vorhanden sind, wird für die nächste eingefügte Zeile 301 als Wert verwendet, also der aktuelle Identitätswert plus 1, der aktuelle für die Spalte definierte Inkrementwert.
USE AdventureWorks;
GO
DBCC CHECKIDENT ("HumanResources.Employee", RESEED, 30);
GO
Siehe auch
Verweis
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)
IDENTITY-Eigenschaft (Transact-SQL)
USE (Transact-SQL)
Andere Ressourcen
Replizieren von Identitätsspalten
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
17. November 2008 |
|
14. April 2006 |
|
05. Dezember 2005 |
|