DBCC CHECKIDENT (Transact-SQL)DBCC CHECKIDENT (Transact-SQL)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Überprüft den aktuellen Identitätswert der angegebenen Tabelle in SQL Server 2017SQL Server 2017 und ändert ihn gegebenenfalls.Checks the current identity value for the specified table in SQL Server 2017SQL Server 2017 and, if it is needed, changes the identity value. Sie können DBCC CHECKIDENT auch verwenden, um manuell einen neuen aktuellen Identitätswert für die Identitätsspalte festzulegen.You can also use DBCC CHECKIDENT to manually set a new current identity value for the identity column.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax


DBCC CHECKIDENT   
 (   
    table_name  
        [, { NORESEED | { RESEED [, new_reseed_value ] } } ]  
)  
[ WITH NO_INFOMSGS ]  

ArgumenteArguments

table_nametable_name
Der Name der Tabelle, deren aktueller Identitätswert überprüft werden soll.Is the name of the table for which to check the current identity value. Die angegebene Tabelle muss eine Identitätsspalte enthalten.The table specified must contain an identity column. Tabellennamen müssen den Regeln für entsprechen Bezeichner.Table names must comply with the rules for identifiers. Zwei oder drei Teilnamen müssen begrenzt sein, z. B. "Person.AddressType" oder [Person.AddressType].Two or three part names must be delimited, such as 'Person.AddressType' or [Person.AddressType].

NORESEEDNORESEED
Gibt an, dass der aktuelle Identitätswert nicht geändert werden soll.Specifies that the current identity value should not be changed.

RESEEDRESEED
Gibt an, dass der aktuelle Identitätswert geändert werden soll.Specifies that the current identity value should be changed.

new_reseed_valuenew_reseed_value
Der neue Wert, der als aktueller Wert der Identitätsspalte verwendet werden soll.Is the new value to use as the current value of the identity column.

WITH NO_INFOMSGSWITH NO_INFOMSGS
Alle Informationsmeldungen werden unterdrückt.Suppresses all informational messages.

HinweiseRemarks

Die spezifischen Korrekturen, die am aktuellen Identitätswert vorgenommen werden, sind abhängig von den Parameterangaben.The specific corrections made to the current identity value depend on the parameter specifications.

DBCC CHECKIDENT-BefehlDBCC CHECKIDENT command Durchgeführte IdentitätskorrekturenIdentity correction or corrections made
DBCC CHECKIDENT ( Table_name, NORESEED)DBCC CHECKIDENT ( table_name, NORESEED ) Der aktuelle Identitätswert wird nicht zurückgesetzt.Current identity value is not reset. DBCC CHECKIDENT gibt den aktuellen Identitätswert und den aktuellen maximalen Wert der Identitätsspalte zurück.DBCC CHECKIDENT returns the current identity value and the current maximum value of the identity column. 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.If the two values are not the same, you should reset the identity value to avoid potential errors or gaps in the sequence of values.
DBCC CHECKIDENT ( Table_name )DBCC CHECKIDENT ( table_name )

oderor

DBCC CHECKIDENT ( Table_name, RESEED)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.If the current identity value for a table is less than the maximum identity value stored in the identity column, it is reset using the maximum value in the identity column. Weitere Informationen finden Sie im Abschnitt "Ausnahmen" weiter unten.See the 'Exceptions' section that follows.
DBCC CHECKIDENT ( Table_name, RESEED, New_reseed_value )DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value ) Aktueller Identitätswert wird festgelegt, um die New_reseed_value.Current identity value is set to the new_reseed_value. Wenn keine Zeilen, da die Tabelle erstellt wurde, oder die erste Zeile, die nach dem Ausführen von DBCC CHECKIDENT eingefügt wird, wenn alle Zeilen mit TRUNCATE TABLE-Anweisung entfernt wurden verwendet, in die Tabelle eingefügt wurden New_reseed_value als Identität.If no rows have been inserted into the table since the table was created, or if all rows have been removed by using the TRUNCATE TABLE statement, the first row inserted after you run DBCC CHECKIDENT uses new_reseed_value as the identity.

Wenn Zeilen in der Tabelle vorhanden sind, wird die nächste Zeile eingefügt, mit der New_reseed_value Wert.If rows are present in the table, the next row is inserted with the new_reseed_value value. In Version SQL Server 2008 R2SQL Server 2008 R2 und früher: wird verwendet, die nächste eingefügte Zeile New_reseed_value + aktuelles Inkrement Wert.In version SQL Server 2008 R2SQL Server 2008 R2 and earlier, the next row inserted uses new_reseed_value + the current increment value.

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:If the table is not empty, setting the identity value to a number less than the maximum value in the identity column can result in one of the following conditions:

– Wenn eine PRIMARY KEY- oder UNIQUE-Einschränkung für die Identitätsspalte vorhanden ist, wird die Fehlermeldung 2627 bei späteren einfügungsvorgängen in die Tabelle generiert werden, da die generierten Identitätswert mit vorhandenen Werten in Konflikt steht.-If a PRIMARY KEY or UNIQUE constraint exists on the identity column, error message 2627 will be generated on later insert operations into the table because the generated identity value will conflict with existing values.

– Wenn eine PRIMARY KEY- oder UNIQUE-Einschränkung nicht vorhanden ist, führt die spätere einfügungsvorgängen zu doppelten Identitätswerten.-If a PRIMARY KEY or UNIQUE constraint does not exist, later insert operations will result in duplicate identity values.

AusnahmenExceptions

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.The following table lists conditions when DBCC CHECKIDENT does not automatically reset the current identity value and provides methods for resetting the value.

BedingungCondition Methoden zum ZurücksetzenReset methods
Der aktuelle Identitätswert ist größer als der maximale Wert in der Tabelle.The current identity value is larger than the maximum value in the table. Führen Sie DBCC CHECKIDENT (Table_name, NORESEED) zum Ermitteln der aktuellen maximalen Wert in der Spalte, und geben Sie diesen Wert als den New_reseed_value in einem DBCC CHECKIDENT (Tabelle_ Namen, RESEED,New_reseed_value) Befehl.Execute DBCC CHECKIDENT (table_name, NORESEED) to determine the current maximum value in the column, and then specify that value as the new_reseed_value in a DBCC CHECKIDENT (table_name, RESEED,new_reseed_value) command.

-ODER--OR-

Führen Sie DBCC CHECKIDENT (Table_name, RESEED,New_reseed_value) mit New_reseed_value auf einen sehr niedrigen Wert festgelegt, und führen Sie DBCC CHECKIDENT ( TABLE_NAME, RESEED) auf den Wert zu korrigieren.Execute DBCC CHECKIDENT (table_name, RESEED,new_reseed_value) with new_reseed_value set to a very low value, and then run DBCC CHECKIDENT (table_name, RESEED) to correct the value.
Alle Zeilen werden aus der Tabelle gelöscht.All rows are deleted from the table. Führen Sie DBCC CHECKIDENT (Table_name, RESEED,New_reseed_value) mit New_reseed_value auf den gewünschten Anfangswert festgelegt.Execute DBCC CHECKIDENT (table_name, RESEED,new_reseed_value) with new_reseed_value set to the desired starting value.

Ändern des AusgangswertsChanging the Seed Value

Der Ausgangswert ist der Wert, der für die erste in die Tabelle geladene Zeile in eine Identitätsspalte eingefügt wird.The seed value is the value inserted into an identity column for the very first row loaded into the table. 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.All subsequent rows contain the current identity value plus the increment value where current identity value is the last identity value generated for the table or view.

Mit DBCC CHECKIDENT können Sie folgende Aufgaben nicht ausführen:You cannot use DBCC CHECKIDENT to perform the following tasks:

  • Ändern des ursprünglichen Ausgangswerts, der für eine Identitätsspalte angegeben wurde, als die Tabelle oder die Sicht erstellt wurde.Change the original seed value that was specified for an identity column when the table or view was created.

  • Zuweisen von neuen Ausgangswerten zu vorhandenen Zeilen in einer Tabelle oder Sicht.Reseed existing rows in a table or view.

    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.To change the original seed value and reseed any existing rows, you must drop the identity column and recreate it specifying the new seed value. Wenn die Tabelle Daten enthält, werden die ID-Nummern zu den vorhandenen Zeilen mit den angegebenen Ausgangswerten und inkrementellen Werten hinzugefügt.When the table contains data, the identity numbers are added to the existing rows with the specified seed and increment values. Die Reihenfolge, in der die Zeilen aktualisiert werden, ist nicht sichergestellt.The order in which the rows are updated is not guaranteed.

ResultsetsResult Sets

Unabhängig davon, ob eine der Optionen für eine Tabelle festgelegt ist, die eine Identitätsspalte beinhaltet, gibt DBCC CHECKIDENT die folgende Meldung für alle Vorgänge zurück, sofern kein neuer Ausgangswert angegeben ist.Whether or not any of the options are specified for a table that contains an identity column, DBCC CHECKIDENT returns the following message for all operations except when specifying a new seed value.

Checking identity information: current identity value '\<current identity value>', current column value '\<current column value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Wenn DBCC CHECKIDENT verwendet wird, geben Sie einen neuen Ausgangswerts mithilfe von RESEED New_reseed_value, wird die folgende Meldung zurückgegeben.When DBCC CHECKIDENT is used to specify a new seed value by using RESEED new_reseed_value, the following message is returned.

Checking identity information: current identity value '\<current identity value>'. DBCC execution completed. If DBCC printed error messages, contact your system administrator.

BerechtigungenPermissions

Aufrufer muss Besitzer des Schemas mit der Tabelle oder ein Mitglied der Sysadmin festen Serverrolle die Db_owner feste Datenbankrolle oder der Db_ddladmin behoben die Datenbankrolle.Caller must own the schema that contains the table, or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role.

BeispieleExamples

A.A. Zurücksetzen des aktuellen Identitätswertes, sofern dies erforderlich istResetting the current identity value, if it is needed

Im folgenden Beispiel wird, falls erforderlich, der aktuelle Identitätswert der angegebenen Tabelle in der AdventureWorks2012AdventureWorks2012-Datenbank zurückgesetzt.The following example resets the current identity value, if it is needed, of the specified table in the AdventureWorks2012AdventureWorks2012 database.

USE AdventureWorks2012;  
GO  
DBCC CHECKIDENT ('Person.AddressType');  
GO  

B.B. Anzeigen des aktuellen IdentitätswertesReporting the current identity value

Im folgenden Beispiel wird der aktuelle Identitätswert in der angegebenen Tabelle der AdventureWorks2012AdventureWorks2012-Datenbank angezeigt. Ein fehlerhafter Identitätswert wird jedoch nicht korrigiert.The following example reports the current identity value in the specified table in the AdventureWorks2012AdventureWorks2012 database, and does not correct the identity value if it is incorrect.

USE AdventureWorks2012;   
GO  
DBCC CHECKIDENT ('Person.AddressType', NORESEED);   
GO  

C.C. Festlegen des aktuellen Identitätswertes auf einen neuen WertForcing the current identity value to a new value

Im folgenden Beispiel wird der aktuelle Identitätswert in der Spalte AddressTypeID in der Tabelle AddressType auf den Wert 10 festgelegt.The following example forces the current identity value in the AddressTypeID column in the AddressType table to a value of 10. Da die Tabelle vorhandene Zeilen hat, verwendet die nächste eingefügte Zeile 11 als Wert, also den neuen, aktuellen inkrementellen Wert, der für den Spaltenwert plus 1 definiert ist.Because the table has existing rows, the next row inserted will use 11 as the value, that is, the new current increment value defined for the column value plus 1.

USE AdventureWorks2012;  
GO  
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);  
GO  

Siehe auchSee Also

ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)
DBCC (Transact-SQL)DBCC (Transact-SQL)
IDENTITY (Property) (Transact-SQL)IDENTITY (Property) (Transact-SQL)
Replizieren von IdentitätsspaltenReplicate Identity Columns
USE (Transact-SQL)USE (Transact-SQL)
IDENT_SEED ( Transact-SQL )IDENT_SEED (Transact-SQL)
IDENT_INCR ( Transact-SQL )IDENT_INCR (Transact-SQL)