Partilhar via


MSSQLSERVER_605

Detalhes

Nome do produto

SQL Server

Versão do produto

10.50

Número da compilação do produto

 

ID do evento

605

Origem do evento

MSSQLSERVER

Componente

SQLEngine

Nome simbólico

WRONGPAGE

Texto da mensagem

Falha na tentativa de buscar a página lógica %S_PGID no banco de dados %d. Ela pertence à unidade de alocação %I64d não a %I64d.

Explicação

Esse erro geralmente indica um dano na página ou na alocação do banco de dados especificado. O SQL Server detecta danos quando lê páginas que pertencem a uma tabela seja seguindo os vínculos de página ou utilizando uma página IAM. Todas as páginas alocadas para uma tabela devem pertencer a uma das unidades de alocação associadas à tabela. Se a ID da unidade de alocação contida no cabeçalho da página não corresponder a uma ID de unidade de alocação associada à tabela, essa exceção será gerada. A primeira ID de unidade de alocação listada na mensagem de erro é a ID presente no cabeçalho da página, e o segundo valor da unidade de alocação é a ID associada com a tabela.

Erros causados por dados corrompidos

Um nível de gravidade 21 indica a possibilidade de os dados estarem corrompidos. As causas possíveis são uma cadeia de páginas danificada, uma página IAM corrompida ou uma entrada inválida na exibição de catálogo sys.objects do objeto em questão. Esses erros geralmente são causados por falha de hardware ou do driver de dispositivo do disco.

Erros transitórios

Um nível de gravidade 12 indica um possível erro transitório; ou seja, ele ocorre no cache e não indica dano nos dados armazenados em disco. Os erros transitórios 605 podem ser causados pelas seguintes condições:

  • O sistema operacional prematuramente notifica o SQL Server de que uma operação de E/S foi concluída; a mensagem de erro é exibida mesmo que os dados não estejam corrompidos.

Executar uma consulta com a dica de otimização NOLOCK ou definir o nível de isolamento da transação como READ UNCOMMITTED. Quando uma consulta que não usa NOLOCK ou READ UNCOMMITTED tenta ler dados que estão sendo movidos ou alterados por outro usuário, ocorre um erro 605. Para verificar se é um erro 605 transitório, reexecute a consulta posteriormente. Para obter mais informações, consulte o artigo 235880 da Base de Dados de Conhecimento: "Você recebe uma mensagem de erro "Erro 605" quando você executa uma consulta com a dica otimizador NOLOCK ou definir o nível de isolamento de transação como READ UNCOMMITTED no SQL Server.

Em geral, se o erro ocorreu durante o acesso aos dados, mas as operações DBCC CHECKDB subsequentes foram concluídas com êxito, provavelmente o erro 605 era transitório.

Ação do usuário

Se o erro 605 não é transitório, o problema é grave e deve ser corrigido por meio das seguintes tarefas:

  1. Identifique as tabelas associadas com as unidades de alocação especificadas na mensagem executando a consulta a seguir. 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 com a segunda ID de unidade de alocação especificada na mensagem de erro.

  3. Execute DBCC CHECKDB sem uma cláusula REPAIR o mais rápido possível para determinar toda a extensão do dano causado no banco de dados inteiro.

  4. Verifique no log de erros se existem outros erros que costumam acompanhar um erro 605 e examine o Log de Eventos do Windows para identificar problemas de sistema ou relacionados ao hardware. Corrija quaisquer problemas relacionados a hardware contidos nos logs.

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

  1. Restaure o banco de dados de um backup limpo conhecido. Use o recurso de backup de restauração de página para restaurar somente as páginas danificadas.

  2. Execute DBCC CHECKDB com a cláusula REPAIR recomendada pela operação DBCC CHECKDB executada na etapa 3 para reparar o dano. Se a execução de DBCC CHECKDB com uma das cláusulas REPAIR não corrigir o problema, contate seu provedor de suporte. Revise a saída gerada por DBCC CHECKDB.

    Observação sobre cuidadosCuidado

    Se você não tiver certeza do efeito de DBCC CHECKDB com uma cláusula REPAIR sobre os dados, contate o provedor de suporte antes de executar essa instrução.

Consulte também

Referência