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.

Themenlink (Symbol)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:

  • Wenn eine PRIMARY KEY- oder UNIQUE-Einschränkung für die Identitätsspalte vorhanden ist, wird bei späteren Einfügevorgängen in die Tabelle die Fehlermeldung 2627 generiert, da ein Konflikt zwischen dem generierten Identitätswert und vorhandenen Werten besteht.
  • Wenn keine PRIMARY KEY- oder UNIQUE-Einschränkung vorhanden ist, führen spätere Einfügungsvorgänge zu doppelten Identitätswerten.

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.

  • Führen Sie DBCC CHECKIDENT (table_name, NORESEED) aus, um den aktuellen maximalen Wert in der Spalte zu ermitteln, und geben Sie anschließend diesen Wert für new_reseed_value im Befehl DBCC CHECKIDENT (table_name, RESEED,new_reseed_value) an.

oder

  • Führen Sie DBCC CHECKIDENT (table_name, RESEED,new_reseed_value) aus, wobei new_reseed_value auf einen sehr kleinen Wert festgelegt wird, und führen Sie anschließend DBCC CHECKIDENT (table_name, RESEED) aus, um den Wert zu korrigieren.

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

Geänderter Inhalt:
  • Die Definition von new_reseed_value. wurde korrigiert.
  • In den Bemerkungen wurde ein Abschnitt über das Ändern des Ausgangswerts hinzugefügt.

14. April 2006

Neuer Inhalt:
  • Text zum Ergebnis der Festlegung eines Identitätswerts auf eine Zahl kleiner als der maximale Wert in der Identitätsspalte wurde hinzugefügt.
  • Dem Abschnitt mit Ausnahmen wurde Text für den Fall hinzugefügt, dass alle Zeilen aus der Tabelle gelöscht werden.

05. Dezember 2005

Neuer Inhalt:
  • Der Beschreibung des new_reseed_value-Arguments wurde Text hinzugefügt.