Il DBCC CHECKIDENT
comando di gestione viene utilizzato per ripristinare il contatore di identità. La sintassi del comando è:
DBCC CHECKIDENT (table_name [, { NORESEED | { RESEED [, new_reseed_value ]}}])
[ WITH NO_INFOMSGS ]
Esempio:
DBCC CHECKIDENT ('[TestTable]', RESEED, 0);
GO
Non era supportato in una versione precedente del database SQL di Azure, ma ora è supportato.
Si noti che l' new_reseed_value
argomento è variato tra le versioni di SQL Server in base alla documentazione :
Se le righe sono presenti nella tabella, la riga successiva viene inserita con il valore new_reseed_value . Nella versione SQL Server 2008 R2 e precedenti, la riga successiva inserita utilizza new_reseed_value + il valore di incremento corrente.
Tuttavia, trovo queste informazioni fuorvianti (in realtà è semplicemente sbagliato) perché il comportamento osservato indica che almeno SQL Server 2012 utilizza ancora new_reseed_value + la logica del valore di incremento corrente. Microsoft è persino in contraddizione con la propria Example C
trovata sulla stessa pagina:
C. Forzare il valore di identità corrente su un nuovo valore
L'esempio seguente forza il valore di identità corrente nella colonna AddressTypeID nella tabella AddressType su un valore di 10. Poiché la tabella ha righe esistenti, la riga successiva inserita utilizzerà 11 come valore, ovvero il nuovo valore di incremento corrente definito per il valore della colonna più 1.
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
Tuttavia, tutto ciò lascia un'opzione per comportamenti diversi nelle versioni più recenti di SQL Server. Immagino che l'unico modo per essere sicuri, fino a quando Microsoft non chiarirà le cose nella sua stessa documentazione, sia quello di eseguire test effettivi prima dell'uso.