Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Valori duplicati nella colonna Identità

Ho testato ciò che dice Giogri e se si abilita Identity Specification (almeno nel 2008, probabilmente anche altre versioni) dopo che la tabella ha righe, il DB avvierà la numerazione al valore intero più alto. Se hai una riga con 100 come valore della colonna, quindi abilita Identity, il prossimo inserto sarà 101. Anche con Identity Seed specificato come 1. Non era quello che mi sarei aspettato, ma è quello che è successo.

Oltre a SET IDENTITY INSERT , c'è anche un comando di reseed. DBCC CHECKIDENT comando che ripristinerà i valori della tua identità a ciò che hai specificato.

Dato che l'abilitazione della specifica dell'identità inizia effettivamente dal numero intero più alto nella colonna, qualcuno probabilmente ha utilizzato SET IDENTITY_INSERT oppure ha eseguito un DBCC CHECKIDENT .

Il modo più rapido per eseguire nuovamente la sequenza, come dice Andomar, è eliminare/ricreare la colonna in questo modo

ALTER TABLE tbl
DROP COLUMN ident_column
GO
alter TABLE tbl
ADD ident_column int IDENTITY

SET IDENTITY_INSERT documenti:http://msdn.microsoft.com/ it-us/library/aa259221(SQL.80).aspx
DBCC CHECKIDENT documenti:http://msdn.microsoft.com/ it-us/library/aa258817(SQL.80).aspx