FIX: Errore di incongruenza metadati dopo è passare partizioni delle tabelle i corrispondenti file e filegroup

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 3095958
Sintomi
Si consideri lo scenario seguente:
  • Si dispongono di due tabelle partizionate in Microsoft SQL Server 2014 e sono mappate le partizioni della prima tabella a diversi file e filegroup utilizzando lo stesso schema di partizione e funzione.
  • Si passa a uno di tali partizioni alla seconda tabella e quindi si elimina la seconda tabella.
  • Eliminare file e filegroup associati alla partizione commutata.
  • Si esegue un'istruzione SELECT nella seconda tabella.
In questo scenario, viene visualizzato il seguente messaggio di errore:

Msg 606, livello 21, stato 1
Metadati inconsistenti. Id di filegroupid di filegroup> specificato per tabellanome della tabella> non esiste. Eseguire DBCC CHECKDB o CHECKCATALOG.

Quando si esegue l'istruzione DBCC CHECKDB/CHECKTABLE, viene visualizzato il seguente messaggio di errore:

Impossibile elaborare l'indiceIndexName> della tabellaTableName> perché filegroup (ID di FileGroupFileGroupNumber>) non è valido.
Risoluzione
Il problema è stato corretto in seguito aggiornamenti cumulativi di SQL Server: Raccomandazioni: Installare l'aggiornamento cumulativo più recente per SQL Server
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutte le correzioni di protezione che sono stati incluse nell'aggiornamento cumulativo precedente. Si consiglia di scaricare e installare gli ultimi aggiornamenti cumulativi per SQL Server:


Nota Questa correzione impedisce solo le occorrenze future di questo problema. Se si sta già verificando questo problema, è possibile esportare i dati in un nuovo database senza alcun danneggiamento dei metadati esistenti. A tale scopo, attenersi alla seguente procedura:
  1. Per determinare se una partizione dispone di un filegroup non valido, eseguire la query seguente per vedere se viene restituito un risultato:
    SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
  2. Rendere visibile la tabella con il danneggiamento dei metadati.

    Se la query dal passaggio 1 restituisce un risultato, la partizione con metadati danneggiato che impedisce la visualizzazione (selezionare * da) tutte le righe della tabella. Per risolvere questo problema, rimuovere tale partizione non valido.

    Nota
    la partizione deve essere vuota. In caso contrario, i file e filegroup che era impossibile non sono stati ignorati o eliminati.

    A tale scopo, spostare la partizione in un'altra tabella che utilizza lo stesso schema di partizionamento. Questa tabella può essere una tabella di fittizia. Utilizzare l'id_contenitore dalla query nel passaggio 1 e farlo corrispondere con l'id_partizione da sys.partitions. (Accertarsi che si nota la partition_number). Utilizzare il partition_number per eseguire un partizione di ALTER TABLE SWITCH dalla tabella che è stato non visualizzabile nella tabella fittizio. La tabella fittizia deve essere lo stesso insieme di colonne e utilizzare lo stesso schema di partizione. Query per trovare la partizione incoerente possono simile al seguente:

    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. Copiare i dati dalla tabella precedentemente non visualizzabile nel nuovo database.
Status
Microsoft ha confermato che questo è un problema per i prodotti Microsoft elencati nella sezione "Si applica a".

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 3095958 - Ultima revisione: 04/12/2016 00:49:00 - Revisione: 2.0

Microsoft SQL Server 2014 Service Pack 1

  • kbfix kbqfe kbexpertiseadvanced kbsurveynew kbmt KB3095958 KbMtit
Feedback