Passaggio all'ora solare 27 ottobre 2019 03:0002:00 sposta indietro l'orologio di 1 ora (si dorme 1 ora in più)
Mi è capitato di recente di modificare una tabella di SQL Server 2008 R2 in cui c'era una colonna identity. La modifica consisteva nell'aggiungere dei campi in mezzo ad altri esistenti. Dopo la modifica la tabella era correttamente modificata ma... la colonna identity era stata resettata.
In pratica nella tabella avevo inserito parecchie righe e l'identity era arrivata a circa 33000. I record nella tabella venivano poi spostati in una tabella di storico. Al momento della modifica la tabella era vuota e dopo la modifica l'identity aveva ripreso dal valore 1.
Lo stesso problema si presenta anche con una tabella contenente dei dati dove gli ultimi record sono stati cancellati, l'identity viene reimpostato al valore massimo presente nella colonna al momento della modifica.

Questò perchè la tabella viene distrutta e poi ricreata con la nuova struttura, ma non viene recuperato il valore dell'identity.

In questa situazione l'unica cosa che si può fare è reimpostare l'identity al valore corretto.
Ad esempio per reimpostare il valore dell'identity a 33000 della tabella downloads:
DBCC CHECKIDENT (downloads, RESEED, 33000)
in questo caso il prossimo valore sarà 33001.

Per vedere qual'è il valore attuale dell'identity:
DBCC CHECKIDENT (downloads, NORESEED)
che da un risultato simile a questo
Checking identity information: current identity value '5', current column value '5'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.