Problema no auto increment via SQL Server 2012

Ola pessoal,

Recentemente vi muitas pessoas reclamarem de um compartamento um pouco incomum no SQL Server 2012, o fato de um campo com auto increment ter um pulo de 1000 registros em comparação com o ultimo registro gravado.

Como por exemplo:

sql1

Sabemos que caso você tenha feito vários inserts e em seguida um delete, o increment não vai retornar o valor com base no delete, e sim seguir a ordem cronológica, mas podemos concordar que 1000 registros de uma vez só é um pouco dificil.

Pois bem, não é um bug ou alguma falha, mas sim uma nova feature adicionada ao SQL Server 2012, que após a instância ser reiniciada, o increment terá um avanço no contador somando o valor atual + 1.000 .

Particularmente não acho isso uma vantagem, isso pode acabar com a lógica de alguma aplicação ou pode ter outras consequências, mas segundo a Microsoft, esse cenário também pode ser benéfico.

Uma boa noticia para quem não curtiu isso é, você pode desabilita-lo facilmente. Através do Startup Parameters, você pode inserir o parametro -t272, aplicar e reiniciar o SQL Server, dai este cenário não ira se repetir.

Caso esteja com esta pendência, recomendo que leia o artigo abaixo do codeproject. Nele é citado mais alguns detalhes sobre a feature, e também a forma de desabilita-la:

http://www.codeproject.com/Tips/668042/SQL-Server-2012-Auto-Identity-Column-Value-Jump-Is

Fica ai então a dica caso você se depare com essa “surpresa” 😀

Fontes:

Além do codeproject, um agradecimento aos meus amigos DBA’s de todos os dias, Jose Rocha e Fernada 😀

É isso ai pessoal.

Dúvidas, criticas ou sugestões? Fiquem a vontade, todo retorno é construtivo 🙂

Jose Wilson

Deixe uma resposta