Simptome
Modificați tipul de date al unei coloane dintr-un tabel de bază de date din ntext în nvarchar (Max) pe un server care rulează Microsoft SQL Server 2012, 2014 sau 2016. Atunci când actualizați tabelul adăugând mai mult de 4.000 de înregistrări, DBCC CHECKDB poate raporta erorile care seamănă cu următoarele:
MSG 8961, nivel 16, stat 1, LineNumber Eroare tabel: objectID, indexID, partitionID, allocUnitID (tastați date LOB). Nodul de date în afara rândului de la pagina (pageid), slot 0, textID nu se potrivește cu referința de la pagina (pageid), slot 0. MSG 8961, nivel 16, stat 1, LineNumber Eroare tabel: objectID, indexID, partitionID, allocUnitID (tastați date LOB). Nodul de date în afara rândului de la pagina (pageid), slot 0, textID nu se potrivește cu referința de la pagina (pageid), slot 0. MSG 8929, nivel 16, stat 1, LineNumberobjectID, indexID, partitionID, allocUnitID (tastați date în rând): erorile găsite în datele din afara rândului cu ID -ul deținut de înregistrarea datelor identificate prin rid = (rid) Rezultatele DBCC pentru 'tablename'. Există 1 rânduri în 1 pagini pentru obiectul "tablename". CHECKTABLE a găsit 0 erori de alocare și 3 erori de consecvență în tabelul 'tablename' (objectID). repair_allow_data_loss este nivelul minim de reparare pentru erorile găsite de DBCC CHECKTABLE (DatabaseName. tablename). Executarea DBCC finalizată. Dacă DBCC a imprimat mesaje de eroare, contactați administratorul de sistem.
Rezolvare
Această problemă este remediată în următoarele actualizări cumulative pentru SQL Server:
Actualizarea cumulativă 5 pentru SQL Server 2016 RTM
Actualizarea cumulativă 2 pentru SQL Server 2016 SP1
Actualizarea cumulativă 4 pentru SQL Server 2014 SP2
Actualizarea cumulativă 11 pentru SQL Server 2014 SP1
Actualizarea cumulativă 7 pentru SQL Server 2012 Service Pack 3
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Cea mai recentă actualizare cumulativă pentru SQL Server 2016
Cea mai recentă actualizare cumulativă pentru SQL Server 2014
Cea mai recentă actualizare cumulativă pentru SQL Server 2012 SP3
Soluție de evitare
Pentru a rezolva această problemă după ce modificați tipul de date, setați opțiunea valori mari în afara rândului la 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.