CORRECÇÃO: Erro de inconsistência de metadados depois de mudar de partições da tabela e largue ficheiros correspondentes e os grupos de ficheiros

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 3095958
Sintomas
Considere o seguinte cenário:
  • Tem duas tabelas de partição no Microsoft SQL Server 2014, e as partições da primeira tabela são mapeadas para diferentes ficheiros e os grupos de ficheiros utilizando o mesmo esquema de partição e a função.
  • Mudar um essas partições para a segunda tabela e, em seguida, truncar a segunda tabela.
  • Largar ficheiros e os grupos de ficheiros que estão mapeados para a partição comutada.
  • Executar uma instrução SELECT na segunda tabela.
Neste cenário, recebe a seguinte mensagem de erro:

Msg 606, nível 21, indicar 1
Inconsistência de metadados. Id de grupo de ficheirosid de grupo de ficheiros> especificado para tabelanome da tabela> não existe. Executar DBCC CHECKDB ou CHECKCATALOG.

Quando executar DBCC CHECKDB/CHECKTABLE, recebe a seguinte mensagem de erro:

Não é possível processar o índiceIndexName> da tabelaTableName> porque o grupo de ficheiros (ID de grupo de ficheirosFileGroupNumber>) é inválido.
Resolução
O problema foi corrigido pela primeira vez as seguintes actualizações cumulativas do SQL Server: Recomendação: Instale a actualização cumulativa mais recente para o SQL Server
Cada nova actualização cumulativa para o SQL Server contém todas as correcções e todas as correcções de segurança que foram incluídas na anterior actualização cumulativa. Recomendamos que transfira e instale as ultimas actualizações cumulativas para o SQL Server:


Nota Esta correcção apenas impede que as ocorrências futuras desta questão. Se já estiver a ter este problema, exporte os dados para uma base de dados nova sem quaisquer danos nos metadados do existente. Para tal, siga estes passos:
  1. Para determinar se uma partição tem um grupo de ficheiros inválido, execute a seguinte consulta para ver se devolve um resultado:
    SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
  2. Tornar novamente visível a tabela com os danos nos metadados.

    Se a consulta do passo 1 devolve um resultado, a partição com metadados corrompido está a impedir de visualização (seleccionar * da) quaisquer linhas na tabela. Para contornar este problema, remova essa partição incorrecta.

    Nota
    de partições danificada devem estar vazia. Caso contrário, os ficheiros e grupo de ficheiros que se encontrava poderiam não foram ignorados ou eliminados.

    Para o fazer, mova esta partição para outra tabela que utiliza o mesmo esquema de criação de partições. Nesta tabela pode ser apenas uma tabela fictícia. Utilize o id_contentor da consulta no passo 1 e fazê-lo corresponder com id_partição de sys.partitions. (Certifique-se de que anote o partition_number.) Utilize o partition_number para efectuar uma PARTIÇÃO para alterar parâmetro de tabela da tabela que foi unviewable à tabela fictício. A tabela fictícia deve ter o mesmo conjunto de colunas e utilizar o mesmo esquema de partição. A consulta para localizar a partição incompatível pode ter o seguinte aspecto:

    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. Copie os dados da tabela unviewable anteriormente na base de dados nova.
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 3095958 - Última Revisão: 04/12/2016 01:32:00 - Revisão: 2.0

Microsoft SQL Server 2014 Service Pack 1

  • kbfix kbqfe kbexpertiseadvanced kbsurveynew kbmt KB3095958 KbMtpt
Comentários