MSSQLSERVER_605MSSQLSERVER_605

Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions) Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions)

DetalhesDetails

AtributoAttribute ValorValue
Nome do ProdutoProduct Name SQL ServerSQL Server
ID do eventoEvent ID 605605
Origem do EventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent SQLEngineSQLEngine
Nome simbólicoSymbolic Name WRONGPAGEWRONGPAGE
Texto da mensagemMessage Text Falha na tentativa de buscar a página lógica %S_PGID no banco de dados %d.Attempt to fetch logical page %S_PGID in database %d failed. Ela pertence à unidade de alocação %I64d não a %I64d.It belongs to allocation unit %I64d not to %I64d.

ExplicaçãoExplanation

Esse erro geralmente indica um dano na página ou na alocação do banco de dados especificado.This error generally signifies page or allocation corruption in the specified database. O SQL ServerSQL Server detecta danos quando lê páginas que pertencem a uma tabela, seguindo os vínculos de página ou usando a página IAM.SQL ServerSQL Server detects corruption when reading pages belonging to a table either by following the page linkages or by using the Index Allocation Map (IAM). Todas as páginas alocadas para uma tabela devem pertencer a uma das unidades de alocação associadas à tabela.All pages allocated to a table must belong to one of the allocation units associated with the table. 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.If the allocation unit ID contained in the page header does not match an allocation unit ID associated with the table, this exception is raised. 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.The first allocation unit ID listed in the error message is the ID present in the page header, and the second allocation unit value is the ID associated with the table.

Erros de dados corrompidosData Corruption Errors

Um nível de gravidade 21 indica a possibilidade de os dados estarem corrompidos.A severity level of 21 indicates potential data corruption. As possíveis causas 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.Possible causes are a damaged page chain, a corrupt IAM, or an invalid entry in the sys.objects catalog view for that object. Esses erros geralmente são causados por falha de hardware ou do driver de dispositivo do disco.These errors are often caused by hardware or disk device driver failure.

Erros transitóriosTransient Errors

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.A severity level of 12 indicates a potential transient error; that is, it occurs in the cache and does not indicate damage to data on disk. Os erros transitórios 605 podem ser causados pelas seguintes condições:Transient 605 errors can be caused by the following conditions:

  • O sistema operacional prematuramente notifica o SQL ServerSQL 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.The operating system prematurely notifies SQL ServerSQL Server that an I/O operation has completed; the error message is displayed even though no actual data corruption exists.

  • Executar uma consulta com a dica de otimização NOLOCK ou definir o nível de isolamento da transação como READ UNCOMMITTED.Running a query with the Optimizer hint NOLOCK or setting the transaction isolation level to READ UNCOMMITTED. Quando uma consulta que não usa nível de isolamento da transação NOLOCK ou READ UNCOMMITTED tenta ler dados que estão sendo movidos ou alterados por outro usuário, ocorre um erro 605.When a query that is using NOLOCK or READ UNCOMMITTED transaction isolation level tries to read data that is being moved or changed by another user, a 605 error occurs. Para verificar se é um erro 605 transitório, reexecute a consulta posteriormente.To verify that it is a transient 605 error, rerun the query later.

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.In general, if the error occurs during data access but subsequent DBCC CHECKDB operations complete without error, the 605 error was probably transient.

Ação do usuárioUser Action

Se o erro 605 não é transitório, o problema é grave e deve ser corrigido por meio das seguintes tarefas:If the 605 error is not transient, the problem is severe and must be corrected by performing the following tasks:

  1. Identifique as tabelas associadas com as unidades de alocação especificadas na mensagem executando a consulta a seguir.Identify the tables associated with the allocation units specified in the message by running the following query. Substitua allocation_unit_id pelas unidades de alocação especificadas na mensagem de erro.Replace allocation_unit_id with the allocation units specified in the error message.

    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.Execute DBCC CHECKTABLE without a REPAIR clause on the table associated with the second allocation unit ID specified in the error message.

  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.Execute DBCC CHECKDB without a REPAIR clause as soon as possible to determine the full extent of the corruption in the entire database.

  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.Check the error log for other errors that often accompany a 605 error and examine the Windows Event Log for any system or hardware related issues. Corrija quaisquer problemas relacionados a hardware existentes nos logs.Fix any hardware-related problems that are contained in the logs.

Se o problema não estiver relacionado ao hardware, execute uma das seguintes tarefas:If the problem is not hardware related, perform one of the following tasks:

  1. Restaure o banco de dados de um backup limpo conhecido.Restore the database from a known clean backup. Use o recurso de backup de restauração de página para restaurar somente as páginas danificadas.You can leverage the page restore backup feature to restore just the damaged pages.

  2. Execute DBCC CHECKDB com a cláusula REPAIR recomendada pela operação DBCC CHECKDB executada na etapa 3 para reparar o dano.Run DBCC CHECKDB with the REPAIR clause recommended by the DBCC CHECKDB operation performed in step 3 to repair the corruption. Se a execução de DBCC CHECKDB com uma das cláusulas REPAIR não corrigir o problema, contate seu provedor de suporte.If running DBCC CHECKDB with one of the REPAIR clauses does not correct the problem, contact your primary support provider. Revise a saída gerada por DBCC CHECKDB.Have the output from DBCC CHECKDB available for review.

    Cuidado

    Se você não tiver certeza do efeito de DBCC CHECKDB com uma cláusula REPAIR sobre seus dados, contate o provedor de suporte antes de executar essa instrução.If you are not sure what effect DBCC CHECKDB with a REPAIR clause has on your data, contact your primary support provider before running this statement.

Consulte TambémSee Also

DBCC CHECKTABLE (Transact-SQL)DBCC CHECKTABLE (Transact-SQL)