Symptom
Du kan ändra data typen för en kolumn i en databas tabell från ntext till nvarchar (max) på en server med Microsoft SQL Server 2012, 2014 eller 2016. När du uppdaterar tabellen genom att lägga till fler än 4 000 poster kan DBCC CHECKDB rapportera fel som ser ut ungefär så här:
Meddelande 8961, nivå 16, State 1, LineNumber Tabell fel: ObjectID, indexID, PARTITIONID, allocUnitID (Type LOB data). Datanoden utanför raden på sidan (PageID), fack 0, textID matchar inte referensen från sidan (PageID), fack 0. Meddelande 8961, nivå 16, State 1, LineNumber Tabell fel: ObjectID, indexID, PARTITIONID, allocUnitID (Type LOB data). Datanoden utanför raden på sidan (PageID), fack 0, textID matchar inte referensen från sidan (PageID), fack 0. Meddelande 8929, nivå 16, tillstånd 1, LineNumberObjectID, indexID, PartitionID, AllocUnitID (Skriv in data på raden): fel hittades i data utanför raden med ID som ägs av data posten identifieras av RID = (RID) DBCC-resultat för "TableName". Det finns 1 rader på 1 sidor för objektet "TableName". CHECKTABLE hittade 0 allokeringsfel och 3 konsekvens fel i tabellen 'TableName' (ObjectID). repair_allow_data_loss är den minsta reparations nivån för de fel som hittas av DBCC CHECKTABLE (databasename. TableName). DBCC-körningen är klar. Om fel meddelanden om DBCC skrivs ut kontaktar du system administratören.
Lösning
Det här problemet är åtgärdat i följande kumulativa uppdateringar för SQL Server:
Kumulativ uppdatering 5 för SQL Server 2016 RTM
Kumulativ uppdatering 2 för SQL Server 2016 SP1
Kumulativ uppdatering 4 för SQL Server 2014 SP2
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och säkerhets korrigeringar som fanns i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Senaste kumulativa uppdateringen för SQL Server 2016
Lösning
Om du vill undvika det här problemet när du har ändrat data typen ställer du in alternativet för stora värde typer från rad till 1.
ALTER TABLE TableName ALTER COLUMN COLUMN_NAME nvarchar(max) NOT NULL
go
exec sp_tableoption 'TableName', 'large value types out of row', '1'
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".
Referenser
Lär dig mer om terminologin som används av Microsoft för att beskriva program varu uppdateringar.