Tentativo di recuperare la pagina logica (5: 65424) nel database 2 non riuscito


11

Ricevo quanto segue SqlExceptionchiamando una procedura memorizzata:

Tentativo di recuperare la pagina logica (5: 65424) nel database 2 non riuscito. Appartiene all'unità di allocazione 7349876362857938944 e non a 4899918190390149120.

System.Data.SqlClient.SqlException verificato
Messaggio = "Tentativo di recuperare la pagina logica (5: 65424) nel database 2 non riuscito. Appartiene all'unità di allocazione 7349876362857938944 e non a 4899918190390149120.

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

Cosa significa questa eccezione? C'è qualche soluzione al problema sopra riportato?

Sebbene il database a cui fa riferimento l'errore sopra indicato indichi tempdb, errori simili che fanno riferimento al messaggio 605, possono essere corretti utilizzando le risposte seguenti.

Messaggio 605, livello 21, stato 3, riga 1
Tentativo di recupero della pagina logica (1: 8687634) nel database 7 non riuscito. Appartiene all'unità di allocazione 72057594364821504 e non a 72057594052476928.

Risposte:


11

Se l'ID database indicato dal messaggio di errore è 2, il database interessato è tempdb. Un metodo per correggere questo tipo di corruzione in tempdb è semplicemente riavviare l'istanza di SQL Server. Per gli ID del database diversi da 2, seguire i consigli seguenti.

Potrebbe essere necessario ripristinare dal backup, tuttavia provare questo:

Come membro del ruolo sysadmin, esegui DBCC PAGE (2, 5, 65424, 3);e cerca il Metadata: IndexIdvalore.

  • Se è 0(heap) o 1(indice cluster) è necessario ripristinare dal backup.
  • Se lo è non è 0 o 1, si può solo ricostruire l'indice non cluster.

Esegui il comando DBCC e facci sapere cosa trovi. Controlla https://www.mssqltips.com/sqlservertip/1578/using-dbcc-page-to-examine-sql-server-table-and-index-data/ per dettagli sul DBCC PAGEcomando


10

Il tuo database è corrotto. Tempo di ripristinare da un buon backup. Se non si dispone di backup, è tempo di conoscere L'importanza di testare il piano di ripristino . È inoltre garantita un'indagine sull'affidabilità dell'hardware, fare attenzione agli avvisi e agli errori nei registri di sistema.


9

L'errore indica che il database è danneggiato. La buona notizia è che l'ID database 2 indica che si tratta del database tempdb, quindi è facile risolverlo: basta riavviare l'istanza del database.

Una volta riavviata l'istanza, dovresti capire perché è avvenuta la corruzione. Inizia eseguendo chkdsksull'unità su cui si trova il file del problema. Successivamente dovrai guardare l'archiviazione stessa e vedere se ci sono problemi lì. Potrebbe essere un problema di disco fisico, potrebbe essere driver di schede HBA o RAID, ecc.


Denny, ritieni che anche fare controlli di integrità della RAM sarebbe utile? Hai visto che una pagina corrotta nella RAM si traduce anche in corruzione su disco?
Ali Razeghi,

1
Se c'è una RAM stick difettosa che potrebbe causare una pagina sporca. Le probabilità sono molto più alte che si tratta di un problema con il sottosistema del disco rispetto alla memoria. Sarebbe il prossimo posto dove cercare se i dischi stessero effettivamente bene.
mrdenny,

2

Sono stato in grado di risolvere questo problema cancellando le cache SQL:

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO

Apparentemente il riavvio del servizio SQL avrebbe avuto lo stesso effetto.

(tramite Made By SQL , riprodotto qui per aiutare gli altri!)


1

Nel mio caso, la soluzione era il troncamento e il popolamento dei dati nelle tabelle interessate .

Molto probabilmente i dati all'interno delle tabelle sono stati danneggiati.


1

Ciò che sentiresti da molte persone è " il database è corrotto, è necessario ripristinarlo " senza nemmeno raccomandarti di dedicare qualche minuto per eseguire alcune delle seguenti operazioni; rivedere i registri, scoprire quando si è verificato il problema per la prima volta, l'errore che ha preceduto quella riga, controllare il database / tabella a cui appartiene la pagina

Nel mio caso questo errore era preceduto da;

Impossibile trovare la voce di indice nell'ID indice 9, della tabella 629577281, nel database 'XYZ'. L'indice indicato è corrotto o si è verificato un problema con il piano di aggiornamento corrente

Una soluzione alternativa consisteva nel tracciare l'indice a cui si fa riferimento ed eliminarlo temporaneamente.

in seguito ho trovato un collegamento Microsoft che descrive il mio problema esatto e offre un collegamento per la soluzione

spero che questo aiuti qualcun altro in futuro

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.