Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Symptom

Tänk dig följande situation:

  • Det finns två partitionerade tabeller i Microsoft SQL Server 2014 och partitionerna i den första tabellen mappas till olika filer och fil grupper med samma partitionsschema och funktion.

  • Du växlar en av dessa partitioner till den andra tabellen och sedan trunkeras den andra tabellen.

  • Du släpper filer och fil grupper som mappas till den bytade partitionen.

  • Du kör ett SELECT-uttryck i den andra tabellen.

I det här scenariot visas följande fel meddelande:

MSG 606, Level 21, State 1Metadata inkonsekvens. Filgrupp-ID<filgrupp-id> anges för tabell <tabell namn> inte finns. Kör DBCC CHECKDB eller CHECKCATALOG.

När du kör DBCC CHECKDB/CHECKTABLE visas följande fel meddelande:

Det går inte att bearbeta index <IndexName> för tabell <TableName> eftersom filgrupp-ID <FileGroupNumber>) är ogiltigt.

Lösning

Problemet åtgärdades först i följande kumulativa uppdateringar av SQL Server:

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Vi rekommenderar att du laddar ner och installerar de senaste kumulativa uppdateringarna för SQL Server:

Obs! Denna korrigering förhindrar framtida förekomster av det här problemet. Om du redan har det här problemet kan du exportera dina data till en ny databas utan befintliga metadata. Gör så här:

  1. Om du vill ta reda på om en partition har en ogiltig filgrupp kör du följande fråga för att se om den returnerar ett resultat:

    SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
  2. Gör tabellen med skadade metadata synliga igen. Om frågan från steg 1 returnerar ett resultat kan partitionen med skadade metadata inte visas (Välj * från) några rader i tabellen. Undvik problemet genom att ta bort den felaktiga partitionen.Obs! Den felaktiga partitionen ska vara tom. Annars gick det inte att ta bort filerna och fil gruppen som den hade i den. För att göra det flyttar du den här partitionen till en annan tabell som använder samma partitionerings schema. Den här tabellen kan vara bara en dummy-tabell. Använd container_id från frågan i steg 1 och matcha den med partition_id från sys. partitions. (Observera partition_number.) Använd partition_number för att utföra en Byt PARTITION för en ALTER TABLE från tabellen som inte kunde granskas. Tabellen provdocka ska ha samma uppsättning kolumner och använda samma partitionsschema. Din fråga för att hitta den inkonsekventa partitionen kan se ut så här:

    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. Kopiera informationen från den tabell som är den som är föråldrad till den nya databasen.

Status

Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×