Simptomi
Varat mainīt datu tipu datu bāzes tabulā no ntext uz nvarchar (max) serverī, kurā darbojas sistēma Microsoft SQL Server 2012, 2014 vai 2016. Atjauninot tabulu, pievienojot vairāk nekā 4 000 ierakstus, DBCC CHECKDB var ziņot par kļūdām, kas līdzinās tālāk norādītajām.
Msg 8961, līmenis 16, valsts 1, rindas numurs% Tabulas kļūda: ObjectId, indexID, PARTITIONID, allocUnitID (rakstīt LOB datus). Lappuses datu mezgls, kas atrodas ārpus rindas (PageID), slots 0, textID neatbilst tā atsaucei no lapas (PageID), slots 0. Msg 8961, līmenis 16, valsts 1, rindas numurs% Tabulas kļūda: ObjectId, indexID, PARTITIONID, allocUnitID (rakstīt LOB datus). Lappuses datu mezgls, kas atrodas ārpus rindas (PageID), slots 0, textID neatbilst tā atsaucei no lapas (PageID), slots 0. Msg 8929, Level 16, State 1, rindas numurs%ObjectId, indexID, partitionID, allocUnitID (ierakstiet rindu datus): kļūdas, kas atrastas ārpus rindas datiem ar ID , kas piederēs, atbrīvojot no RID = (RID) DBCC rezultāti "tablename". Objektam "tablename" ir 1 rindas 1 rindā. CHECKTABLE ir atrasta 0 sadalījuma kļūdas un 3 konsekvences kļūdas tabulā 'tablename' (ObjectId). repair_allow_data_loss ir minimālais labošanas līmenis kļūdām, kuras ir DBCC CHECKTABLE (databasename. tablename). DBCC izpilde pabeigta. Ja DBCC izdrukātie kļūdu ziņojumi, sazinieties ar sistēmas administratoru.
Risinājums
Šī problēma ir novērsta tālāk norādītajos kumulatīvajos SQL Server atjauninājumos:
Kumulatīvais atjauninājums 5 SQL Server 2016 RTM
SQL Server 2016 SP1 kumulatīvais atjauninājums 2
Kumulatīvais atjauninājums 4 SQL Server 2014 SP2
Kumulatīvais atjauninājums 11 SQL Server 2014 SP1
Kumulatīvais atjauninājums 7 SQL Server 2012 3. servisa pakotnei
Katrs jaunais kumulatīvais SQL Server atjauninājums ietver visus labojumfailus un drošības labojumus, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos kumulatīvos atjauninājumus SQL Server:
Jaunākais SQL Server 2016 kumulatīvais atjauninājums
Risinājums
Lai novērstu šo problēmu pēc datu tipa maiņas, iestatiet lielo vērtību tipi ārpus rindas opcijas uz 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".
Atsauces
Uzziniet par terminoloģiju , ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.