KB3213240 - FIX: Als u het gegevenstype wijzigt en vervolgens de tabel bijwerkt met meer dan 4000 records, raakt de database beschadigd

Van toepassing op
SQL 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

Symptomen

U wijzigt het gegevenstype van een kolom in een databasetabel van ntext in nvarchar(max) op een server waarop Microsoft SQL Server 2012, 2014 of 2016 wordt uitgevoerd. Wanneer u de tabel bijwerkt door meer dan 4000 records toe te voegen, kan DBCC CHECKDB fouten melden die hier als volgt uitzien:

Opmerking

Msg 8961, Level 16, State 1, LineNumber
Tabelfout: ObjectID,indexID, partitionID,allocUnitID (type LOB-gegevens ). Het off-row gegevensknooppunt op pagina (PageID), sleuf 0, textID komt niet overeen met de verwijzing vanaf pagina (PageID), sleuf 0.

Msg 8961, Level 16, State 1, LineNumber
Tabelfout: ObjectID,indexID, partitionID,allocUnitID (type LOB-gegevens ). Het off-row gegevensknooppunt op pagina (PageID), sleuf 0, textID komt niet overeen met de verwijzing vanaf pagina (PageID), sleuf 0.

Msg 8929, Level 16, State 1, LineNumber
ObjectID,indexID, partitionID, allocUnitID (type In-row data): Fouten gevonden in off-row-gegevens met id die eigendom is van een gegevensrecord die wordt geïdentificeerd door RID = (RID)
DBCC-resultaten voor 'TableName'.

Er zijn 1 rijen in 1 pagina's voor object 'TableName'.
CHECKTABLE heeft 0 toewijzingsfouten en 3 consistentiefouten gevonden in tabel 'TableName' (ObjectID).
repair_allow_data_loss is het minimale herstelniveau voor de fouten die zijn gevonden met DBCC CHECKTABLE (Databasenaam.Tabelnaam).
DBCC-uitvoering voltooid. Als DBCC foutberichten heeft afgedrukt, neem dan contact op met de systeembeheerder.

Oplossing

Dit probleem is opgelost in de volgende cumulatieve updates voor SQL Server:

Cumulatieve update 5 voor SQL Server 2016 RTM

Cumulatieve update 2 voor SQL Server 2016 SP1

Cumulatieve update 4 voor SQL Server 2014 SP2

Cumulatieve update 11 voor SQL Server 2014 SP1

Cumulatieve update 7 voor SQL Server 2012 Service Pack 3
        
      

Informatie over cumulatieve updates voor SQL Server

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en beveiligingspatches uit de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

Meest recente cumulatieve update voor SQL Server 2016

Meest recente cumulatieve update voor SQL Server 2014

Meest recente cumulatieve update voor SQL Server 2012 SP3

Tijdelijke oplossing

Als u dit probleem wilt omzeilen nadat u het gegevenstype hebt gewijzigd, stelt u de optie voor het typen grote waarden buiten rij in op 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 heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Meer informatie

Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.