Der DBCC CHECKIDENT
Verwaltungsbefehl wird verwendet, um den Identitätszähler zurückzusetzen. Die Befehlssyntax lautet:
DBCC CHECKIDENT (table_name [, { NORESEED | { RESEED [, new_reseed_value ]}}])
[ WITH NO_INFOMSGS ]
Beispiel:
DBCC CHECKIDENT ('[TestTable]', RESEED, 0);
GO
Es wurde in früheren Versionen der Azure SQL-Datenbank nicht unterstützt, wird aber jetzt unterstützt.
Beachten Sie, dass das new_reseed_value
Argument je nach Dokumentation in den SQL Server-Versionen unterschiedlich ist :
Wenn Zeilen in der Tabelle vorhanden sind, wird die nächste Zeile mit dem Wert new_reseed_value eingefügt . In Version SQL Server 2008 R2 und früheren Versionen verwendet die nächste eingefügte Zeile new_reseed_value + den aktuellen Inkrementwert.
Aber ich diese Informationen irreführend finden (einfach falsch tatsächlich) , weil beobachtet Verhalten zeigt an, dass mindestens SQL Server 2012 ist nach wie vor verwendet new_reseed_value + die aktuelle Inkrementwert Logik. Microsoft widerspricht sogar seiner eigenen Example C
auf derselben Seite:
C. Erzwingen des aktuellen Identitätswerts auf einen neuen Wert
Im folgenden Beispiel wird der aktuelle Identitätswert in der AddressTypeID-Spalte in der AddressType-Tabelle auf den Wert 10 gesetzt. Da in der Tabelle vorhandene Zeilen vorhanden sind, wird in der nächsten eingefügten Zeile 11 als Wert verwendet, dh der neue aktuelle Inkrementwert, für den definiert wurde der Spaltenwert plus 1.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
Dies alles lässt jedoch eine Option für unterschiedliches Verhalten bei neueren SQL Server-Versionen. Ich denke, der einzige Weg, um sicher zu sein, bis Microsoft die Dinge in seiner eigenen Dokumentation klärt, besteht darin, vor der Verwendung tatsächliche Tests durchzuführen.