Credo ( ma mi riservo il diritto di controllare ) che la questione sia
la CACHE della colonna identity. SPiego meglio: la colonna identity
"stacca" un numero intero aggiornato dall'incremento ogni volta che si
aggiunge una riga. Per default, 1000 valori di quell'incremento vengono
caricati subito in memoria e poi usati all'occorrenza. Se l'istanza va
giu', i numeri già in cache vengono buttati via ma vengono segnati come
usati e si ricomincia dall'unità successiva ( 1002 in questo caso ).
Il Flag t272 è deprecato da SQL Server 2012 in poi. .
Da MSDN :
"Consecutive values after server restart or other failures –SQL Server
might cache identity values for performance reasons and some of the
assigned values can be lost during a database failure or server restart.
This can result in gaps in the identity value upon insert. If gaps are
not acceptable then the application should use its own mechanism to
generate key values. Using a sequence generator with the NOCACHE option
can limit the gaps to transactions that are never committed."
Bye
Post by g***@gmail.comSalve, ho un db localhost che funziona con un programma scritto in C#. Quando inserisco un record tutto ok.
Se poi inserisco dopo qualche minuto un altro record, il contatore,
invece di aumentare regolarmente di uno alla volta,
salta e addirittura arriva a 1002, 10003 ecc.Come mai? Dove sbaglio?
Dipende da qualche cursore?