KB3095958-FIX: metaduomenų nenuoseklumo klaida perjungus lentelės skaidinius ir išplečiant atitinkamus failus ir failų grupes

Simptomai

Apsvarstykite šį scenarijų:

  • "Microsoft SQL Server 2014" yra dvi suskaidytos lentelės, o pirmos lentelės skaidiniai priskirti skirtingiems failams ir failų grupėms naudojant tą pačią skaidinio schemą ir funkciją.

  • Galite perjungti vieną iš šių skaidinius į antrąją lentelę, tada Sutrumpinkite antrąją lentelę.

  • Galite numesti failus ir failų grupes, kurios yra susietos su perjungtu skaidiniu.

  • Galite paleisti sakinį SELECT antroje lentelėje.

Tokiu atveju gaunate šį klaidos pranešimą:

MSG 606, lygis 21, būsenos 1Metaduomenų neatitikimas. "Failų grupę ID"<failų grupės ID> nurodyta lentelės <lentelės pavadinimo> nėra. Vykdykite DBCC CHECKDB arba CHECKCATALOG.

Kai vykdote DBCC CHECKDB/CHECKTABLE, gaunate šį klaidos pranešimą:

Negalima apdoroti indekso <indexname> lentelės <TableName> nes failų grupę (failų grupę ID <filegroupnumber>) negalioja.

Sprendimas

Problema pirmą kartą išspręsta šiuose kaupiamajame "SQL Server" naujinimuose:

Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Rekomenduojame atsisiųsti ir įdiegti naujausius kaupiamuosius SQL serverio naujinimus:

Pastaba Ši pataisa neleidžia ateityje įvykių šiai problemai. Jei jau susiduriate su šia problema, eksportuokite duomenis į naują duomenų bazę nenaudodami esamų metaduomenų sugadinimo. Norėdami tai atlikti, vykdykite toliau nurodytus veiksmus.

  1. Norėdami nustatyti, ar skaidinyje yra neleistina failų grupė, vykdykite šią užklausą, kad pamatytumėte, ar ji pateikia rezultatą:

    SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
  2. Padarykite, kad lentelė su metaduomenų sugadinimu būtų peržiūrima dar kartą. Jei užklausa iš 1 veiksmo pateikia rezultatą, skaidinys su sugadintu metaduomenimis neleidžia Peržiūrėti (pasirinkite * nuo) bet kurios lentelės eilutės. Norėdami išspręsti šią problemą, pašalinkite netinkamą skaidinį.Pastaba Netinkamas skaidinys turi būti tuščias. Priešingu atveju failai ir failų grupė, kurios nebuvo galima pašalinti arba naikinti. Norėdami tai padaryti, perkelkite šį skaidinį į kitą lentelę, kurioje naudojamos tos pačios skaidymo schemos. Ši lentelė gali būti tik "Dummy" lentelė. Naudokite container_id iš užklausos atlikdami 1 veiksmą ir susiekite ją su partition_id iš sys. pertvaros. (Įsitikinkite, kad užrašėte partition_number.) Naudokite partition_number Norėdami atlikti pakeitimo lentelės perjungimo SKAIDINĮ iš lentelės, kuri nebuvo matoma į manekeno lentelę. Lentelė Dummy turi turėti tą patį stulpelių rinkinį ir naudoti tą pačią skaidinio schemą. Jūsų užklausa, kad rastumėte nenuoseklus skaidinį, gali būti panašūs į šiuos dalykus:

    SELECT au.container_id, au.data_space_id, p.partition_number FROM sys.partitions AS p JOIN sys.allocation_units AS au ON p.partition_id = au.container_id LEFT JOIN sys.filegroups AS fgs ON fgs.data_space_id = au.data_space_id WHERE object_id = OBJECT_ID('MyTableName') AND fgs.data_space_id IS NULL;
  3. Nukopijuokite duomenis iš anksčiau nematomos lentelės į naująją duomenų bazę.

Statusą

"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Dėkojame už jūsų atsiliepimus!

Dėkojame už jūsų atsiliepimą! Panašu, kad gali būti naudinga jus sujungti su vienu iš mūsų „Office“ palaikymo agentų.

×