Échec de la tentative de récupération de la page logique (5: 65424) dans la base de données 2

11

J'obtiens ce qui suit SqlExceptionen appelant une procédure stockée:

La tentative de récupération de la page logique (5: 65424) dans la base de données 2 a échoué. Il appartient à l'unité d'allocation 7349876362857938944 et non à 4899918190390149120.

System.Data.SqlClient.SqlException s'est produite
Message = "La tentative de récupération de la page logique (5: 65424) dans la base de données 2 a échoué. Elle appartient à l'unité d'allocation 7349876362857938944 et non à 4899918190390149120.

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

Que signifie cette exception? Y a-t-il une solution au problème ci-dessus?

Bien que la base de données référencée dans l'erreur ci-dessus indique tempdb, des erreurs similaires référençant le message 605 peuvent être corrigées à l'aide des réponses ci-dessous.

Msg 605, niveau 21, état 3, ligne 1 La
tentative de récupération de la page logique (1: 8687634) dans la base de données 7 a échoué. Il appartient à l'unité d'allocation 72057594364821504 et non à 72057594052476928.

Parag Meshram
la source

Réponses:

11

Si l'ID de base de données indiqué par le message d'erreur est 2, la base de données affectée est tempdb. Une méthode pour corriger ce type de corruption dans tempdb consiste à simplement redémarrer l'instance SQL Server. Pour les ID de base de données autres que 2, suivez les recommandations ci-dessous.

Vous devrez peut-être restaurer à partir d'une sauvegarde, mais essayez ceci:

En tant que membre du rôle sysadmin, exécutez DBCC PAGE (2, 5, 65424, 3);et recherchez la Metadata: IndexIdvaleur.

  • S'il s'agit de 0(segment de mémoire) ou 1(index clusterisé), vous devez restaurer à partir de la sauvegarde.
  • S'il est pas 0 ou 1, vous pouvez simplement reconstruire l'index non ordonnés en clusters.

Exécutez la commande DBCC et faites-nous savoir ce que vous trouvez. Consultez https://www.mssqltips.com/sqlservertip/1578/using-dbcc-page-to-examine-sql-server-table-and-index-data/ pour plus de détails sur la DBCC PAGEcommande

Matt M
la source
10

Votre base de données est corrompue. Il est temps de restaurer à partir d'une bonne sauvegarde. Si vous n'avez pas de sauvegardes, il est temps d'en apprendre davantage sur l'importance de tester votre plan de récupération . Une enquête sur la fiabilité de votre matériel est également justifiée, surveillez les avertissements et les erreurs dans les journaux système.

Remus Rusanu
la source
9

L'erreur indique que votre base de données est corrompue. La bonne nouvelle est que l'ID de base de données 2 indique qu'il s'agit de la base de données tempdb, il est donc facile de résoudre ce problème - redémarrez simplement l'instance de base de données.

Une fois que vous avez redémarré l'instance, vous devez comprendre pourquoi la corruption s'est produite. Commencez par exécuter chkdsksur le lecteur sur lequel se trouve le fichier problème. Ensuite, vous devrez regarder le stockage lui-même et voir s'il y a des problèmes. Cela pourrait être un problème de disque physique, des pilotes de carte HBA ou RAID, etc.

mrdenny
la source
Denny, trouvez-vous que faire des contrôles de santé RAM serait également bénéfique? Avez-vous vu une page corrompue dans la RAM se traduire également par une corruption sur le disque?
Ali Razeghi
1
S'il y a une mauvaise clé RAM, une page peut être signalée comme sale. Les chances sont beaucoup plus élevées qu'il s'agit d'un problème avec le sous-système de disque que la mémoire. Ce serait le prochain endroit où chercher si les disques sont en fait bien.
mrdenny
2

J'ai pu résoudre ce problème en effaçant les caches SQL:

DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO

Apparemment, le redémarrage du service SQL aurait eu le même effet.

(via Made By SQL , reproduit ici pour aider les autres!)

8128
la source
1

Dans mon cas, la troncature et le re-remplissage des données dans les tables concernées était la solution.

Très probablement, les données à l'intérieur des tables étaient corrompues.

xameeramir
la source
1

Ce que vous entendriez de beaucoup de gens est " la base de données est corrompue, vous devez la restaurer " sans même vous recommander de prendre quelques minutes pour effectuer certaines des opérations suivantes; examinez vos journaux, découvrez quand le problème est survenu pour la première fois, l'erreur qui a précédé cette ligne, consultez la base de données / table à laquelle appartient la page

Dans mon cas, cette erreur a été précédée de;

Impossible de trouver l'entrée d'index dans l'ID d'index 9, de la table 629577281, dans la base de données 'XYZ'. L'index indiqué est corrompu ou il y a un problème avec le plan de mise à jour actuel

Une solution de contournement consistait à tracer l'index auquel il était fait référence et à le supprimer temporairement.

j'ai trouvé plus tard un lien Microsoft qui décrit mon problème exact et propose un lien de solution

j'espère que cela aidera quelqu'un d'autre à l'avenir

daffyjeje
la source