web-dev-qa-db-fra.com

Bases de données du serveur SQL bloquées dans l'état de restauration

J'ai un serveur Sharepoint. Nous avons eu un problème avec notre outil de sauvegarde et maintenant certaines de mes bases de données sont bloquées en état de restauration!

Image showing restoring databases

Est-il possible d'arrêter le processus de restauration? et aussi, comment puis-je m'assurer que l'intégrité de la base de données n'a pas été compromise?

87
Pooya Yazdani

Cela est probablement dû au fait que le script de restauration a ajouté le WITH NORECOVERY paramètre, pour rendre la base de données prête pour un journal des transactions applicable après la restauration.

La base de données attend maintenant le dernier fichier journal des transactions.

Vous pouvez soit:

  1. Appliquer le dernier journal des transactions , en utilisant RESTORE LOG database_name FROM backup_device WITH RECOVERY; ... ou
  2. Restaurez la base de données à nouveau, mais cette fois en utilisant ... WITH RECOVERY; ... ou
  3. Forcer la base de données à quitter le mode de restauration en exécutant: RESTORE DATABASE YourDb WITH RECOVERY;

Avant de procéder, assurez-vous de bien comprendre les implications de ces options. Vous pouvez provoquer une perte de données si vous ne faites pas attention.

Voir ceci pour plus de détails:

135
Thomas Kejser

Script T-SQL simple pour résoudre ce problème:

écrivez ce script dans la fenêtre Nouvelle requête et exécutez:

RESTORE DATABASE [DataBase Name] WITH RECOVERY;
52
Sina

Comme nous le savons, l'option de restauration de base de données par défaut est avec Recovery qui garantit que la base de données est disponible et en ligne pour une utilisation après la fin de la restauration de la base de données.

Exemple:

RESTORE DATABASE YourDB FROM DISK= 'C:\\Data\\YourDBBackup.bak'
WITH RECOVERY
GO

Voyons les points importants à propos de la restauration sans récupération

  • La base de données n'est pas utilisable
  • Reste en mode restauration
  • La prochaine séquence de restauration peut être effectuée
  • N'annule pas les transactions non validées

Restaurer avec NoRecovery

Cette option est particulièrement utilisée lorsque plusieurs sauvegardes doivent être restaurées. Cela signifie que lorsque vous exécutez la commande de restauration avec l'option norecovery, la base de données n'est pas publiée pour les utilisateurs jusqu'à ce que la dernière sauvegarde en séquence soit restaurée. Avec la dernière sauvegarde, l'option de récupération est utilisée et la base de données est mise en ligne.

Exemple:

RESTORE DATABASE YourDB FROM DISK - 'C:\\Data\\Backup_part1.bak' 
WITH NORECOVERY
GO

Et alors:

RESTORE LOG YourDB FROM DISK = 'C:\\Data\\BackupLog-part2.trn'
WITH RECOVERY
GO
0
Priyanka

Je viens d'avoir cette situation, et le remède était assez surprenant:

ALTER DATABASE DBName SET ONLINE;

Apparemment, la restauration de NetBackup qui s'est cassée l'a laissé dans un état étrange. Aucune autre solution n'a fonctionné (même si je n'avais pas encore essayé de redémarrer le service SQL Server)

Je serais prudent avec la base de données, cependant, comme théoriquement une fois qu'une restauration commence, puis échoue, vous pourriez avoir corrompu des données. Je vais juste restaurer la base de données de toute façon, donc cela n'a pas d'importance pour moi.

0
ErikE