Cette assertion se produit parce que le code de restauration a lu une page à partir de la sauvegarde mais que la page est corrompue et l'ID de fichier estampillé dans l'en-tête de la page n'existe pas dans la base de données en cours de restauration. Cela se déclenche à partir d'un fichier de code appelé bckioreq.cpp (Je possédais tout cela à l'époque où j'étais chez MS).
Le message pour exécuter DBCC CHECKDB est un message générique qui ne s'applique pas dans ce cas.
Je présume que vous restaurez une sauvegarde complète de la base de données puis une série d'autres sauvegardes différentielles et/ou de journaux ? Vous restaurez sur 2005, mais est-ce que vous restaurez une ancienne sauvegarde ?
C'est ce qu'on appelle un retail-assert dans le code - il n'y a absolument aucun moyen de contourner cela - dès que le code l'atteint, l'assertion se déclenchera et la restauration échouera. Il existe un élément de Connect pour rendre cela plus agréable mais ce n'est pas corrigé en 2008 non plus.
Cela se produit sur la sauvegarde complète que vous êtes en train de restaurer ou sur l'une des sauvegardes différentielles et/ou de journaux suivantes ? Si c'est la sauvegarde complète, il n'y a rien que vous puissiez faire - cette sauvegarde est irrécupérable. Si c'est l'une des sauvegardes ultérieures, vous pouvez restaurer tout jusqu'à cette sauvegarde mais sans inclure celle-ci.
C'est essentiellement votre réponse, je crains.
Maintenant, comment cela s'est-il produit ? (question rhétorique) Il se peut que la base de données sauvegardée soit corrompue, ou que le sous-système E/S ait corrompu la sauvegarde. Quelques choses que vous pouvez faire pour vous protéger contre cela - activez les sommes de contrôle de page dans la base de données et utilisez l'option WITH CHECKSUM sur vos sauvegardes. Cela ajoute une certaine vérification pour s'assurer que ce qui est sauvegardé n'est pas corrompu. Vous pouvez également valider vos sauvegardes de différentes manières - consultez mon article de blog à ce sujet : Importance of validating backups.
J'espère que cela vous aidera !
0 votes
Une question : quel pack de services est installé sur votre SQL Server 2005, s'il y en a un d'installé?
0 votes
C'est SQL 2005. Aucun Service Pack. J'allais installer le Service Pack 1