2009-05-16 8 views
2

J'ai une base de données montrant dans SQL Enterprise Manager "(... Restauration)"SQL Server 2005 Restauration Hanging

Si je fais SP_WHO il n'y a pas de processus de restauration.

Le disque et l'activité CPU sur le serveur est très faible

Je pense que ce n'est pas du tout restaurer.

Comment puis-je me débarrasser de cela?

J'ai essayé de renommer le fichier MDF sous-jacent, mais même quand je fais "NET STOP MSSQLSERVER" il me dit que le fichier est ouvert.

J'ai essayé d'utiliser PROCEXP pour trouver quel processus le fichier est ouvert, mais même le dernier PROCEXP ne semble pas le faire sous Windows Server 2003 R2 x64. La vue du volet inférieur est vide.

Dans SQL Server journal il indique « la base de données est marquée RESTAURER et est dans un état qui ne permet pas la récupération à exécuter »

Répondre

11

Sql Server dispose de deux types de sauvegarde:

  • Sauvegarde complète , contient la base de données entière
  • sauvegarde du journal des transactions, ne contient que les modifications depuis la dernière sauvegarde complète

Lors de la restauration, Sql Server vous demande si yo vous voulez restaurer des journaux supplémentaires après la sauvegarde complète. Si vous choisissez cette option, appelée WITH NORECOVERY, la base de données restera dans l'état Restauration. Il attendra que plus de journaux de transactions soient restaurés.

Vous pouvez forcer le mode de restauration avec:

RESTORE DATABASE <DATABASE_NAME> WITH RECOVERY 

Si cette commande donne une erreur, détachez la base de données, supprimez les fichiers MDF, et commencer la restauration à partir de zéro. S'il continue d'échouer, votre fichier de sauvegarde peut être corrompu.

Voici une capture d'écran des options de restauration, avec la valeur par défaut sélectionnée. La deuxième option laissera la base de données en état de restauration.

Image of the restore options http://img193.imageshack.us/img193/8366/captureu.png

P.S.1. Courez-vous la version 64 bits de l'explorateur de processus? Vérifiez que vous voyez procexp64.exe dans le gestionnaire de tâches.

P.S.2. Cela ressemble plus à une question pour serverfault.

+0

+1 le problème a été résolu :) – Rahul

-1

Si vous essayez de vous débarrasser de la serrure sur le fichier que je vous recommande de prendre Unlocker http://www.emptyloop.com/unlocker/

Il vous donnera une option pour déverrouiller le fichier, ou tuer le processus qui a verrouillé le fichier. Exécutez ceci sur les fichiers mdf et ldf.

Une autre option consiste à essayer de détacher les fichiers d'Enterprise Manager ou de Sql Management Studio, puis de rattacher la base de données. Vous pouvez essayer ceci avant d'exécuter unlocker pour voir si sql server va juste publier les fichiers mdf et ldf.ATTENTION: Si vous arrêtez le processus, vous risquez de perdre des données ou de corrompre les données. Utilisez-le uniquement si vous tentez de vous en débarrasser et que vous disposez d'une bonne sauvegarde testée.

+0

Si vous détachez la base de données, vous ne pourrez pas la rattacher à nouveau. Une base de données dans un état de restauration ne peut pas être jointe. Par conséquent, si vous le détachez, vous devriez avoir une sauvegarde que vous pouvez restaurer à partir de – GilaMonster

0

L'option WITH RECOVERY est utilisée par défaut lorsque les commandes RESTORE DATABASE/RESTORE LOG sont exécutées. Si vous êtes coincé dans le processus « restauration » vous pouvez ramener une base de données en ligne à l'autre en exécutant:

RESTORE DATABASE YourDB WITH RECOVERY 
GO 

Vous pouvez chercher plus d'options et des outils tiers sur ce SO publier https://stackoverflow.com/a/21192066/2808398