Sintomi
Considerare lo scenario descritto di seguito:
-
Si dispone di un database che include l'isolamento dello snapshot o il livello di isolamento dello snapshot Read Committed abilitato in Microsoft SQL Server 2012 o SQL Server 2014.
-
Il database contiene una tabella non vuota che include un indice cluster a più colonne. La chiave iniziale dell'indice cluster è impostata su not null.
-
Si inizia una transazione e si aggiunge una colonna alla tabella. Il valore di questa colonna viene aggiornato.
-
Si modifica la chiave iniziale dell'indice cluster per consentire il valore NULL.
-
Si inseriscono righe con valori NULL per la chiave iniziale dell'indice cluster e quindi si interrompe la transazione.
In questo scenario, il rollback fa sì che il database venga sospettato e solo "riparabile" con il comando DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS . È inoltre possibile che venga visualizzato il seguente messaggio di errore:
Msg 3316, livello 21, stato 2, riga 135 durante l'annullamento di un'operazione registrata nel database '%. * ls ' si è verificato un errore all'ID del record di log% S_LSN. La riga non è stata trovata. Ripristinare il database da un backup completo o ripristinare il database.
Risoluzione
Informazioni sui Service Pack per SQL Server 2014
Per risolvere il problema, ottenere Service Pack 1 per SQL Server 2014.
Per altre informazioni su SQL Server 2014 Service Pack 1 (SP1), vedere bug corretti in SQL server 2014 Service Pack 1.
Informazioni sui Service Pack per SQL Server 2012
Per risolvere il problema, ottenere il Service Pack più recente per Microsoft SQL Server 2012. Per altre informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base seguente per visualizzare l'articolo:
2755533 Come ottenere il Service Pack più recente per SQL Server 2012
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".