MSSQLSERVER_605

Aplica-se a: SQL Server

Detalhes

Attribute Valor
Nome do Produto SQL Server
ID do Evento 605
Origem do evento MSSQLSERVER
Componente SQLEngine
Nome simbólico WRONGPAGE
Texto da mensagem Falha ao tentar buscar a página lógica %S_PGID no banco de dados %d. Pertence à unidade de alocação %I64d e não a %I64d.

Explanation

Este erro geralmente indica corrupção de página ou alocação na base de dados especificada. O SQL Server deteta corrupção ao ler páginas pertencentes a uma tabela, seja seguindo as ligações das páginas ou utilizando o Index Allocation Map (IAM). Todas as páginas atribuídas a uma tabela devem pertencer a uma das unidades de alocação associadas à tabela. Se o ID da unidade de alocação contido no cabeçalho da página não corresponder a um ID de unidade de alocação associado à tabela, esta exceção é levantada. O primeiro ID da unidade de alocação listado na mensagem de erro é o ID presente no cabeçalho da página, e o segundo valor da unidade de alocação é o ID associado à tabela.

Erros de Corrupção de Dados

Um nível de gravidade de 21 indica potencial corrupção de dados. As possíveis causas são uma cadeia de páginas danificada, um IAM corrompido ou uma entrada inválida na vista de catálogo sys.objects para esse objeto. Estes erros são frequentemente causados por falhas de hardware ou de drivers de dispositivo de disco.

Erros Transitórios

Um nível de gravidade de 12 indica um potencial erro transitório; ou seja, ocorre na cache e não indica danos nos dados no disco. Erros transitórios 605 podem ser causados pelas seguintes condições:

  • O sistema operativo notifica prematuramente o SQL Server de que uma operação de E/S foi concluída; a mensagem de erro é exibida mesmo que não exista corrupção real dos dados.

  • Executar uma consulta com a dica do Optimizer NOLOCK ou definir o nível de isolamento da transação para READ UNCOMMITTED. Quando uma consulta que utiliza o nível de isolamento de transação NOLOCK ou READ UNCOMMITTED tenta ler dados que estão a ser movidos ou alterados por outro utilizador, ocorre um erro 605. Para verificar se se trata de um erro transitório 605, execute novamente a consulta mais tarde.

Em geral, se o erro ocorrer durante o acesso aos dados mas as operações DBCC CHECKDB subsequentes forem concluídas sem erro, o erro 605 foi provavelmente transitório.

Ação do Usuário

Se o erro 605 não for transitório, o problema é grave e deve ser corrigido realizando as seguintes tarefas:

  1. Identifique as tabelas associadas às unidades de alocação especificadas na mensagem executando a seguinte consulta. Substitua allocation_unit_id pelas unidades de alocação especificadas na mensagem de erro.

    USE [database_name];  
    
    GO  
    
    SELECT au.allocation_unit_id, OBJECT_NAME(p.object_id) AS table_name, fg.name AS filegroup_name,  
    
    au.type_desc AS allocation_type, au.data_pages, partition_number  
    
    FROM sys.allocation_units AS au  
    
    JOIN sys.partitions AS p ON au.container_id = p.partition_id  
    
    JOIN sys.filegroups AS fg ON fg.data_space_id = au.data_space_id  
    
    WHERE au.allocation_unit_id = '<allocation_unit_id>' OR au.allocation_unit_id = '<allocation_unit_id>'  
    
    ORDER BY au.allocation_unit_id;  
    
    GO  
    
  2. Execute DBCC CHECKTABLE sem uma cláusula REPAIR na tabela associada ao segundo ID da unidade de alocação especificado na mensagem de erro.

  3. Execute o DBCC CHECKDB sem uma cláusula REPAIR o mais rapidamente possível para determinar a extensão total da corrupção em toda a base de dados.

  4. Verifique o registo de erros para outros erros que frequentemente acompanham um erro 605 e examine o Registo de Eventos do Windows para quaisquer problemas relacionados com o sistema ou hardware. Corrigir quaisquer problemas relacionados com hardware que estejam contidos nos logs.

Se o problema não estiver relacionado com hardware, execute uma das seguintes tarefas:

  1. Restaurar a base de dados a partir de um backup limpo conhecido. Pode usar a funcionalidade de restauração de páginas para restaurar apenas as páginas danificadas.

  2. Execute o DBCC CHECKDB com a cláusula REPAIR recomendada pela operação DBCC CHECKDB realizada no passo 3 para reparar a corrupção. Se executar o DBCC CHECKDB com uma das cláusulas REPAIR não corrigir o problema, contacte o seu fornecedor principal de suporte. Tenha o resultado do DBCC CHECKDB disponível para análise.

    Caution

    Se não tiver a certeza de que efeito o DBCC CHECKDB com uma cláusula REPAIR tem nos seus dados, contacte o seu fornecedor de suporte principal antes de executar esta declaração.