Gäller förSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

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

Kumulativ uppdatering 11 för SQL Server 2014 SP1

Kumulativ uppdatering 7 för SQL Server 2012 Service Pack 3

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

Senaste kumulativa uppdateringen för SQL Server 2014

Senaste kumulativa uppdateringen för SQL Server 2012 SP3

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.

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.