KB3213240 – POPRAVKA: Promena tipa podataka, a zatim ažuriranje tabele sa više od 4000 zapisa uzrokuje oštećenje baze podataka

Primenjuje se na
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

Simptomi

Tip podataka kolone u tabeli baze podataka menjate iz ntext u nvarchar(max) na serveru koji koristi Microsoft SQL Server 2012, 2014 ili 2016. Kada ažurirate tabelu tako što ćete dodati više od 4000 zapisa, DBCC CHECKDB može da prijavi greške poput sledećih:

Napomena

Poruka 8961, nivo 16, država 1, broj linije
Greška u tabeli: ObjectID,indexID, partitionID, allocUnitID (tip LOB podaci). Off-row data node at page (PageID), slot 0, textID does not matches its reference from page (PageID), slot 0.

Poruka 8961, nivo 16, država 1, broj linije
Greška u tabeli: ObjectID,indexID, partitionID, allocUnitID (tip LOB podaci). Off-row data node at page (PageID), slot 0, textID does not matches its reference from page (PageID), slot 0.

Poruka 8929, nivo 16, država 1, broj linije
ObjectID, indexID, partitionID, allocUnitID (tip Podaci unutar reda): Pronađene greške u podacima van reda sa ID-om u vlasništvu zapisa podataka koji identifikuje RID = (RID)
DBCC rezultati za "Imetabele".

There are 1 rows in 1 page for object "TableName".
Funkcija CHECKTABLE je pronašla 0 grešaka dodele i 3 greške konzistentnosti u tabeli "Imetabele" (ID objekta).
repair_allow_data_loss predstavlja minimalni nivo popravke za greške koje pronađe DBCC CHECKTABLE (DatabaseName.TableName).
DBCC izvršavanje je dovršeno. Ako je DBCC odštampao poruke o grešci, obratite se administratoru sistema.

Rešenje

Ovaj problem je rešen u sledećim kumulativnim ispravkama za SQL Server:

Kumulativna ispravka 5 za SQL Server 2016 RTM

Kumulativna ispravka 2 za SQL Server 2016 SP1

Kumulativna ispravka 4 za SQL Server 2014 SP2

Kumulativna ispravka 11 za SQL Server 2014 SP1

Kumulativna ispravka 7 za SQL Server 2012 servisni paket 3
        
      

Osnovni podaci o kumulativnim ispravkama za SQL Server

Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne i bezbednosne ispravke koje su uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:

Najnovija kumulativna ispravka za SQL Server 2016

Najnovija kumulativna ispravka za SQL Server 2014

Najnovija kumulativna ispravka za SQL Server 2012 SP3

Privremeno rešenje

Da biste zaobišli ovaj problem kada promenite tip podataka, postavite opciju "Tipovi velikih vrednosti van reda" na vrednost 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 je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.

Reference

Saznajte više o terminologiji koju Microsoft koristi za opis softverskih ispravki.