CORREÇÃO: Erro de inconsistência de metadados depois que você alterna partições de tabela e soltar grupos de arquivos e os arquivos correspondentes

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 3095958
Sintomas
Considere o seguinte cenário:
  • Você tem duas tabelas particionadas no Microsoft SQL Server 2014 e as partições da primeira tabela são mapeadas para diferentes arquivos e grupos de arquivos usando o mesmo esquema de partição e função.
  • Alternar entre essas partições para a segunda tabela e, em seguida, você pode truncar a segunda tabela.
  • Você soltar arquivos e grupos de arquivos que são mapeados para a partição comutada.
  • Executar uma instrução SELECT na segunda tabela.
Nesse cenário, você recebe a seguinte mensagem de erro:

Msg 606, nível 21, estado 1
Inconsistência de metadados. Id do grupo de arquivosid do grupo de arquivos> especificadas para a tabelanome da tabela> não existe. Execute DBCC CHECKDB ou CHECKCATALOG.

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

Não é possível processar o índiceIndexName> da tabelaTableName> porque o grupo de arquivos (ID de grupo de arquivosFileGroupNumber>) é inválido.
Resolução
O problema foi corrigido primeiramente nas seguintes atualizações cumulativas do SQL Server: Recomendação: Instale a atualização cumulativa mais recente para o SQL Server
Cada nova atualização cumulativa para SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Recomendamos que você faça o download e instala as mais recentes atualizações cumulativas para o SQL Server:


Observação: Essa correção só impede que ocorrências futuras desse problema. Se você já estiver enfrentando esse problema, exporte os dados para um banco de dados novo sem nenhuma corrupção de metadados existentes. Para fazer isso, execute as seguintes etapas:
  1. Para determinar se uma partição possui um grupo de arquivos inválido, execute a seguinte consulta para ver se ele retorna 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 visível novamente a tabela com a corrupção de metadados.

    Se a consulta da etapa 1 retorna um resultado, a partição de metadados corrompido estiver impedindo o visualização (selecione * de) quaisquer linhas na tabela. Para contornar esse problema, remova essa partição inválida.

    Nota
    a partição incorreta deve estar vazia. Caso contrário, os arquivos e o grupo de arquivos que estava poderiam não foram descartados ou excluídos.

    Para fazer isso, mova essa partição para outra tabela que usa o mesmo esquema de particionamento. Essa tabela pode ser apenas uma tabela fictícia. Use id_do_recipiente da consulta na etapa 1 e associe-o a id_da_partição de sys.partitions. (Certifique-se de anotar o número_da_partição.) Use o número_da_partição para realizar uma partição de SWITCH ALTER TABLE da tabela que foi visualizada na tabela fictício. A tabela fictícia deve ter o mesmo conjunto de colunas e usar o mesmo esquema de partição. Sua consulta para localizar a partição inconsistente pode lembrar o seguinte:

    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 visualizada anteriormente para o novo banco de dados.
Situação
A Microsoft confirma que este é um problema em seus produtos listados na seçã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