3 votes

Échec de la restauration à partir d'une sauvegarde de SQL Server 2005

J'ai des fichiers .bak pour la base de données d'un projet que mon entreprise a récemment repris.

J'ai pu restaurer plusieurs des fichiers .bak, mais le plus important est en panne.

Lorsqu'il échoue, j'obtiens simplement une erreur générique, et on me demande de vérifier le journal.

Voici l'erreur qui se produit : Message Assertion du serveur SQL : File : , line=1443 Failed Assertion = 'pFile'. Cette erreur peut être liée au temps. Si l'erreur persiste après avoir réexécuté l'instruction, utilisez DBCC CHECKDB pour vérifier l'intégrité structurelle de la base de données ou redémarrez le serveur pour vous assurer que les structures de données en mémoire ne sont pas corrompues.

Je ne sais pas comment exécuter DBCC CHECKDB sur un fichier *.bak.

Toute aide serait grandement appréciée. Bien que j'aie de l'expérience avec SQL en tant que développeur, je ne suis absolument pas un DBA. Alors supposez que je suis un idiot :)

Merci !

0 votes

Une question : quel service pack est installé sur votre SQL Server 2005, s'il y en a un d'installé ?

0 votes

Son SQL 2005. Pas de Service Pack. J'étais sur le point d'installer le Service Pack 1

11voto

Bernie Perez Points 5091

Cette affirmation se produit parce que le code de restauration a lu une page de la sauvegarde, mais la page est corrompue et l'ID du fichier indiqué dans l'en-tête de la page n'existe pas dans la base de données restaurée. Elle est tirée d'un fichier de code appelé bckioreq.cpp (je possédais tous ces trucs quand 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 suppose 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 en 2005, mais restaurez vous une sauvegarde plus ancienne ?

C'est ce qu'on appelle une assertion de détail dans le code - il n'y a absolument aucun moyen de la contourner - dès que le code la touche, l'assertion se déclenche et la restauration explose. Il y a un élément Connect pour rendre cela plus agréable mais il n'est pas non plus corrigé en 2008.

Cela se produit-il sur la sauvegarde complète que vous restaurez ou sur l'une des sauvegardes différentielles et/ou journalières ultérieures ? S'il s'agit de la sauvegarde complète, il n'y a rien à faire - cette sauvegarde est grillée. Si c'est l'une des sauvegardes ultérieures, vous pouvez tout restaurer jusqu'à cette sauvegarde, mais sans l'inclure.

C'est en gros votre réponse, j'en ai peur.

Comment cela est-il arrivé ? (question rhétorique) Il se peut que la base de données qui a été sauvegardée soit corrompue, ou que le sous-système d'E/S ait corrompu la sauvegarde. Il y a deux 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 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 de la validation des sauvegardes .

J'espère que cela vous aidera !

0 votes

+1 Merci, Paul ! Je suis en train de revoir activement nos travaux de sauvegarde...

0 votes

Donc, en gros, ce que vous dites, c'est que je dois retourner à l'entreprise qui a créé la sauvegarde et dire, refaites-le parce que c'est corrompu ?

0 votes

Et oui, je suppose que c'est la sauvegarde complète. Ils ont également envoyé un translog, mais je suppose que c'est la sauvegarde complète. De plus, lorsque j'ai essayé de restaurer en utilisant Mangement Studio, le nom de la base de données était listé comme "INCOMPLET". Cela aurait-il dû être mon premier signe que quelque chose n'allait pas ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X