Kann ich das
verwenden? %Vor%Befehl, um den aktuellen Wert einer Identitätsspalte auf den ursprünglichen Wert in SQL Server 2008 zurückzusetzen?
Wenn ja, ist dies der richtige Weg, um diese Operation ohne Nachteil durchzuführen? Wenn nicht, gibt es einen alternativen Weg, dies zu tun?
Kann ich den Befehl DBCC CHECKIDENT verwenden, um den aktuellen Wert einer Identitätsspalte auf den ursprünglichen Wert in SQL Server 2008 zurückzusetzen?
Ja.
Wenn ja, ist dies der richtige Weg, um diese Operation ohne Nachteil durchzuführen?
Dies ist der eine dokumentierte Weg, dies zu tun.
Mögliche Nachteile: Sie könnten doppelte IDENTITY
-Werte erhalten - es gibt keine Garantie von SQL Server, dass kein Wert zurückgegeben wird, der nicht bereits verwendet wird.
z. Wenn Ihr IDENTITY
momentan 100 ist und Sie es auf 1 zurücksetzen, werden die Chancen früher oder später liegen, es wird ein Wert erzeugt, der bereits verwendet wird.
Das IDENTITY
, wie in SQL Server implementiert, sucht nicht nach vorhandenen Werten oder irgendetwas - es erzeugt nur sequentielle Zahlen. Es liegt an Ihnen - vor allem, wenn Sie%% co_de für RESEED
verwendet haben, um sicherzustellen, dass die Werte nicht dupliziert werden.
Der Wert kann weggelassen werden. Also wenn du
benutzt %Vor%SQL Server setzt den Ident-Wert auf die richtige nächste Zahl - entsprechend den bereits verwendeten Zahlen. Dies ist die einzige Möglichkeit, Identitätswerte, die ich kenne, neu zu setzen.
Es hat einen großen Nachteil, wenn und nur wenn das Feld ein Primärschlüssel und Verweis auf einen Fremdschlüssel in einer anderen Tabelle ist. Neuzuordnung hilft beim Abrufen von Datensätzen in Transaktionstabellen mit Indizes für das Feld.
Tags und Links sql-server sql-server-2008 identity-column