Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Valores duplicados na coluna de identidade


Testei o que o Giogri diz e se você habilitar a Identity Specification (pelo menos em 2008, provavelmente outras versões também) depois que a tabela tiver linhas, o banco de dados iniciará a numeração no valor inteiro mais alto. Se você tiver uma linha com 100 como valor da coluna, habilite Identity, a próxima inserção será 101. Mesmo com Identity Seed especificado como 1. Não era o que eu esperava, mas foi o que aconteceu.

Além de SET IDENTITY INSERT , há também um comando reseed. DBCC CHECKIDENT comando que irá redefinir seus valores de identidade de volta ao que você especificou.

Dado que habilitar a Especificação de Identidade realmente começa no número inteiro mais alto na coluna, alguém provavelmente usou SET IDENTITY_INSERT ou fez um DBCC CHECKIDENT .

A maneira mais rápida de resequenciar como Andomar diz é soltar/recriar a coluna assim
ALTER TABLE tbl
DROP COLUMN ident_column
GO
alter TABLE tbl
ADD ident_column int IDENTITY

SET IDENTITY_INSERT docs:http://msdn.microsoft.com/ pt-br/library/aa259221(SQL.80).aspx
DBCC CHECKIDENT docs:http://msdn.microsoft.com/ pt-br/library/aa258817(SQL.80).aspx