Simptomi
Razmotrite sljedeći scenarij:
-
Imate dvije podijeljene tablice u programu Microsoft SQL Server 2014, a particije prve tablice mapirane su na druge datoteke i grupe datoteka pomoću iste sheme particija i funkcije.
-
Jednu od tih particija prebacite u drugu tablicu, a zatim odsijecate drugu tablicu.
-
Možete odbaciti datoteke i grupe datoteka koje su mapirani na zamijenjena particija.
-
U drugoj tablici pokrenete naredbu SELECT.
U ovom scenariju prikazat će se sljedeća poruka o pogrešci:
MSG 606, razina 21, nedosljednost stanja 1Metapodataka. ID grupe grupu datoteka<ID grupe grupu datoteka> naveden za tablicu <naziv tablice> ne postoji. Pokrenite DBCC CHECKDB ili CHECKCATALOG.
Kada pokrenete DBCC CHECKDB/CHECKTABLE, prikazat će vam se sljedeća poruka o pogrešci:
Nije moguće obraditi indeks <indexname> tablice <tablename> budući da grupa grupu datoteka (ID grupe datoteka <datoteka>) nije valjana.
Rješenje
Problem je prvi put riješen u sljedećim kumulativnim ažuriranjima sustava SQL Server:
Svako novo Kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sve sigurnosne ispravke uključene u prethodno Kumulativno ažuriranje. Preporučujemo da preuzmete i instalirate najnovija kumulativna ažuriranja za SQL Server:
Napomena Ovim se ispravkom sprječava i buduća pojava tog problema. Ako već nailazite na taj problem, izvezite podatke u svježu bazu podataka bez ikakvih postojećih oštećenja metapodataka. Da biste to učinili, slijedite ove korake:
-
Da biste odredili ima li particija datoteka koja nije valjana, pokrenite sljedeći upit da biste provjerili vraća li rezultat:
SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
-
Stvaranje tablice s oštećenjem metapodataka ponovno je vidljivo. Ako upit iz prvog koraka vraća rezultat, particija s oštećenih metapodataka sprječava vas da pogledate (Odaberite * iz) bilo koje retke u tablici. Da biste zaobišli taj problem, uklonite tu lošu particiju.Napomena Loša particija trebala bi biti prazna. U suprotnom, datoteke i grupa datoteka u kojoj se nalazi nisu mogli biti odbačene ili izbrisane. Da biste to učinili, premjestite ovu particiju u drugu tablicu koja koristi istu shemu particioniranja. Ova tablica može biti samo lažna tablica. Upotrijebite container_id iz upita u prvom koraku, a zatim ga Uskladi s partition_id iz sys. particija. (Provjerite jeste li zabilježili partition_number.) Pomoću partition_number možete izvesti PARTICIJU za prebacivanje promjena tablice iz tablice koja je nevidljiva u kartici pseudo. U tablici lažna tablica trebala bi biti ista skupa stupaca i koristiti istu shemu particija. Upit da biste pronašli nedosljedno dijeljenje može nalikovati na sljedeće:
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;
-
Kopirajte podatke iz prethodno nevidljive tablice u novu bazu podataka.
Status
Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".