Corrigindo ordenação em campos IDENTITY Auto Incremento

Como corrigir ordenação em campos IDENTITY Auto Incremento em todo banco de dados Microsoft SQL SERVER

Microsoft-SQL-Server

Algumas vezes, os valores de um campo de auto incremento (Identity) podem ficar desordenados ou com uma numeração onde já exista um registro na tabela, isto pode ocorrer, principalmente após a Restauração de um banco de dados.

Desta Forma, ao efetuar um INSERT em uma determinada tabela o erro abaixo é apresentado:

SQL Server Native Client][SQL Server] Violation of UNIQUE KEY constraint ‘tabela#_#campoid’. Cannot insert duplicate key in object ‘dbo.tabela’.

Para corrigir o auto incremento de uma tabela, basta executar o comando:

DBCC CHECKIDENT(“Tabela”, RESEED, 30)

No exemplo acima, foi alterado o valor do campo Identity da tabela para 30 e  o próximo comando Insert iniciará o auto incremento a partir deste numero.

Mas, E se você precisa corrigir a numeração de campos Identity em todas as tabelas do banco de dados?

Já vi alguns colegas construírem Querys Complexas, montando um cursor lendo com todas as tabelas do banco (sys.tables) para depois armazenar em uma variável o último valor do campo Identity com a função Max e executar o DBCC CHECKIDENT(“Tabela”, RESEED, Variável Valor máximo Encontrado).

Ufa!!! Que trabalhão… Pare de Sofrer.  Kkkk… Isto é trabalhoso, oneroso e lento na execução…

Quando surge uma necessidade deste tipo, basta executar o seguinte comando:

exec sp_MSforeachtable @command1 = ‘DBCC CHECKIDENT (”?”, RESEED)’

Com isto, cada tabela do banco de dados terá o campo Identity corrigido com o ultimo valor máximo inserido.

É isso ai pessoal !

Espero que tenham gostado dessas dicas.

Se você gostou deste artigo, compartilhe estas dicas com um amigo ou nos acompanhe através das redes sociais.
Não gostou, encontrou algum erro ou conhece outras dicas, deixe seus comentários.
Muito Obrigado

Abraços

Posts Similares