Sintomi
Si modifica il tipo di dati di una colonna in una tabella di database da ntext a nvarchar (max) in un server che sta usando Microsoft SQL Server 2012, 2014 o 2016. Quando si aggiorna la tabella aggiungendo più di 4.000 record, DBCC CHECKDB può segnalare errori simili ai seguenti:
Msg 8961, livello 16, stato 1, lineNumber Errore di tabella: ObjectID, indexID, PartitionID, allocUnitID (digitare dati LOB). Il nodo dati fuori riga nella pagina (pageid), slot 0, textID non corrisponde al relativo riferimento dalla pagina (pageid), slot 0. Msg 8961, livello 16, stato 1, lineNumber Errore di tabella: ObjectID, indexID, PartitionID, allocUnitID (digitare dati LOB). Il nodo dati fuori riga nella pagina (pageid), slot 0, textID non corrisponde al relativo riferimento dalla pagina (pageid), slot 0. Msg 8929, livello 16, stato 1, lineNumberObjectID, indexID, PartitionID, allocUnitID (digitare dati nella riga): errori trovati in dati fuori riga con ID di proprietà del record di dati identificato da RID = (RID) Risultati DBCC per "TableName". Sono disponibili 1 righe in 1 pagine per l'oggetto "TableName". CHECKTABLE trova 0 errori di allocazione e 3 errori di coerenza nella tabella 'TableName' (ObjectID). repair_allow_data_loss è il livello minimo di correzione per gli errori trovati da DBCC CHECKTABLE (DatabaseName. TableName). Esecuzione dell'istruzione DBCC completata. Se i messaggi di errore vengono stampati da DBCC, contattare l'amministratore di sistema.
Risoluzione
Questo problema è stato risolto negli aggiornamenti cumulativi seguenti per SQL Server:
Aggiornamento cumulativo 5 per SQL Server 2016 RTM
Aggiornamento cumulativo 2 per SQL Server 2016 SP1
Aggiornamento cumulativo 4 per SQL Server 2014 SP2
Aggiornamento cumulativo 11 per SQL Server 2014 SP1
Aggiornamento cumulativo 7 per SQL Server 2012 Service Pack 3
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli aggiornamenti rapidi e le correzioni di sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Ultimo aggiornamento cumulativo per SQL Server 2016
Soluzione alternativa
Per risolvere il problema dopo aver modificato il tipo di dati, impostare i tipi di valore di grandi dimensioni fuori dall'opzione riga su 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.