Tentativa de buscar a página lógica (5: 65424) no banco de dados 2 falhou

11

Estou recebendo o seguinte SqlExceptionao chamar um procedimento armazenado:

A tentativa de buscar a página lógica (5: 65424) no banco de dados 2 falhou. Pertence à unidade de alocação 7349876362857938944 e não a 4899918190390149120.

System.Data.SqlClient.SqlException ocorreu
Mensagem = "Falha ao buscar a página lógica (5: 65424) no banco de dados 2. Falha na propriedade 7349876362857938944 da unidade de alocação 7349876362857938944 e não 4899918190390149120.

Origem = "
.Net SqlClient Data Provider" ErrorCode = -2146232060
Classe = 21
LineNumber = 257
Number = 605
Procedure = "ispDisplayCount"
Server = "10.10.1.1"
State = 3

O que essa exceção significa? Existe alguma solução para o problema acima?

Embora o banco de dados mencionado no erro acima indique tempdb, erros semelhantes à mensagem 605 podem ser corrigidos usando as respostas abaixo.

Mensagem 605, nível 21, estado 3, linha 1
Tentativa de buscar a página lógica (1: 8687634) no banco de dados 7 falhou. Pertence à unidade de alocação 72057594364821504 e não a 72057594052476928.

Parag Meshram
fonte

Respostas:

11

Se o ID do banco de dados indicado pela mensagem de erro for 2, o banco de dados afetado será tempdb. Um método para corrigir esse tipo de corrupção no tempdb é simplesmente reiniciar a instância do SQL Server. Para IDs de banco de dados diferentes de 2, siga as recomendações abaixo.

Pode ser necessário restaurar a partir do backup; no entanto, tente o seguinte:

Como membro da função sysadmin, execute DBCC PAGE (2, 5, 65424, 3);e procure o Metadata: IndexIdvalor.

  • Se for 0(heap) ou 1(índice clusterizado), você precisará restaurar do backup.
  • Se for não 0 , ou 1, você pode apenas reconstruir o índice não agrupado.

Execute o comando DBCC e informe-nos o que encontrou. Verifique https://www.mssqltips.com/sqlservertip/1578/using-dbcc-page-to-examine-sql-server-table-and-index-data/ para obter detalhes sobre o DBCC PAGEcomando

Matt M
fonte
10

Seu banco de dados está corrompido. Hora de restaurar de um bom backup. Se você não possui backups, é hora de aprender sobre a importância de testar seu plano de recuperação . Uma investigação sobre a confiabilidade do seu hardware também é garantida; observe se há avisos e erros nos logs do sistema.

Remus Rusanu
fonte
9

O erro indica que seu banco de dados está corrompido. A boa notícia é que o ID do banco de dados 2 indica que este é o banco de dados tempdb, portanto, corrigir isso é fácil - basta reiniciar a instância do banco de dados.

Depois de reiniciar a instância, você deve descobrir por que a corrupção ocorreu. Comece executando chkdskna unidade em que o arquivo com problema está. Em seguida, você precisará examinar o próprio armazenamento e verificar se há algum problema. Pode ser um problema de disco físico, drivers de placa HBA ou RAID etc.

Mrdenny
fonte
Denny, você acha que fazer exames de saúde em RAM também seria benéfico? Você já viu uma página corrompida na RAM que também se traduz em corrupção no disco?
Ali Razeghi 25/10/12
11
Se houver um cartão de memória RAM ruim que possa causar uma página reportada como suja. As chances são muito maiores de haver um problema com o subsistema de disco do que com a memória. Esse seria o próximo lugar para procurar se os discos estão realmente bem.
mrdenny
2

Consegui resolver isso limpando os caches SQL:

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO

Aparentemente, reiniciar o serviço SQL teria o mesmo efeito.

(via Made By SQL , reproduzida aqui para ajudar outras pessoas!)

8128
fonte
1

No meu caso, truncar e republicar dados nas tabelas em questão foi a solução.

Provavelmente, os dados nas tabelas estavam corrompidos.

xameeramir
fonte
1

O que você ouviria de muitas pessoas é " o banco de dados está corrompido, você precisa restaurar ", mesmo sem recomendar que você dedique alguns minutos para fazer o seguinte; revise seus logs, descubra quando o problema ocorreu pela primeira vez, o erro que precedeu essa linha, confira o banco de dados / tabela à qual a página pertence

No meu caso, esse erro foi precedido por;

Não foi possível localizar a entrada do índice no ID do índice 9 da tabela 629577281, no banco de dados 'XYZ'. O índice indicado está corrompido ou há um problema com o plano de atualização atual

Uma solução alternativa era rastrear o índice referido e excluí-lo temporariamente.

Mais tarde, encontrei um link deste Microsoft que descreve meu problema exato e oferece um link de solução

espero que isso ajude alguém no futuro

daffyjeje
fonte