Simptomai
Galite keisti duomenų tipo stulpelį duomenų bazės lentelėje iš ntext į nvarchar (max) serveryje, kuriame veikia "Microsoft SQL Server" 2012, "2014" arba "2016". Kai naujinate lentelę įtraukdami daugiau nei 4 000 įrašą, DBCC CHECKDB gali pranešti apie tokias klaidas:
MSG 8961, lygis 16, 1 valstybė, LineNumber Lentelės klaida: ObjectId, IndexId, particionid, allocunitid (tipo LOB duomenys). Ne eilutės duomenų mazgo puslapyje (pageID), lizdas 0, textid nesutampa su jo nuoroda iš puslapio (pageID), lizdas 0. MSG 8961, lygis 16, 1 valstybė, LineNumber Lentelės klaida: ObjectId, IndexId, particionid, allocunitid (tipo LOB duomenys). Ne eilutės duomenų mazgo puslapyje (pageID), lizdas 0, textid nesutampa su jo nuoroda iš puslapio (pageID), lizdas 0. MSG 8929, lygis 16, būsenos 1, LineNumberObjectId, IndexId, particionid, allocunitid (įveskite eilutės duomenis): klaidos rasta ne eilutės duomenyse, kurių ID priklauso pagal RID = (RID) nurodytą duomenų įrašą DBCC rezultatai "TableName". Objekte "TableName" 1 puslapiuose yra 1 eilutės. CHECKTABLE rasta 0 priskyrimo klaidų ir 3 nuoseklumo klaidų lentelėje "TableName" (ObjectId). repair_allow_data_loss yra minimalus klaidos taisymo lygis, nustatytas DBCC CHECKTABLE (Databasvardas. TableName). DBCC vykdymas užbaigtas. Jei "DBCC" išspausdinto klaidų pranešimo, kreipkitės į sistemos administratorių.
Sprendimas
Ši problema išspręsta SQL serverio kaupiamajame naujinime:
Kaupiamasis naujinimas 5 SQL serverio 2016 RTM
Kaupiamasis naujinimas 2 SQL serverio 2016 SP1
Kaupiamasis naujinimas 4 SQL serverio 2014 SP2
Kaupiamasis naujinimas 11 SQL serverio 2014 SP1
Kaupiamasis naujinimas 7, skirtas "SQL Server" 2012 3 pakeitimų paketui
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server 2016"
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server 2014"
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server" 2012 SP3
Sprendimas
Norėdami išspręsti šią problemą, pakeitę duomenų tipą, nustatykite, kad Didžiosios reikšmių tipai nebūtų keičiami į 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" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.
Nuorodos
Sužinokite apie terminologiją "Microsoft" naudoja programinės įrangos naujinimams apibūdinti.