Identity hopp

Vi har fått en rapport på at SQL Identity kan gjøre et hopp på 1000. Det er ikke noe problem for programmet, men kan ha praktisk betydning, da sekvensnummeret brukes for å identifisere tilbud.

Jeg har lett og funnet ut at det er en SQL-server designsak og har sammenheng med omstart av SQL-server, muligens også hvordan den omstartes.

I SQL Server 2012, ble det endret hvordan autonummer genereres, eller i det minste hvordan neste ledige nummer lagres. Det ser ut til at den tar ut en serie, f.eks. 1024-2023 og lagrer høyeste verdi. Når serveren startes på nytt, så begynner den fra det høyeste den fant sist. Det har noen fordeler, f.eks. batchinnlegging av data skal gå hårfint raskere, men jeg skjønner jo godt at det er forvirrende når vi bruker sekvensnummer som tilbudsnummer.

Microsoft skal ikke ha noen plan om å gjøre noe med det.

Oppførselen er ikke konsekvent. Jeg har ingen hull i mine serier som kan forklares med omstart. Jeg har SQL Server 2014 nå,  men den burde hatt samme oppførsel hvis det ikke er endret. Det er heller ingen slike hull i serien på de gamle databasene mine, som har gått veien fra 2000-2005-2008-2012-2014.

Det beste rådet jeg kan gi, er å unngå omstart av SQL serveren, så skjer det i hvert fall ikke så ofte.

Det skal finnes noen veier rundt det, blant annet et parameter (-t272) som skal kunne settes,  som vil logge hver bruk, se bildet.

SQLJump

Comments are closed.