SQL Server: base de données bloquée dans l'état "Restauration"

564

J'ai sauvegardé une base de données:

BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing

Et puis essayé de le restaurer:

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE --force restore over specified database

Et maintenant, la base de données est bloquée dans l'état de restauration.

Certaines personnes ont émis l'hypothèse que c'est parce qu'il n'y avait pas de fichier journal dans la sauvegarde, et qu'il devait être restauré en utilisant:

RESTORE DATABASE MyDatabase
WITH RECOVERY 

Sauf que, bien sûr, échoue:

Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

Et exactement ce que vous voulez dans une situation catastrophique est une restauration qui ne fonctionnera pas.


La sauvegarde contient à la fois un fichier de données et un fichier journal:

RESTORE FILELISTONLY 
FROM DISK = 'MyDatabase.bak'

Logical Name    PhysicalName
=============   ===============
MyDatabase    C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
MyDatabase_log  C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF
Ian Boyd
la source
3
J'ai eu exactement le même problème et toutes les solutions ont échoué. Fait intéressant, je me suis connecté directement au serveur SQL et j'ai émis la DROP DATABASE dbcommande via SSMS et cela a fonctionné (auparavant, j'utilisais SSMS d'une autre machine pour émettre les commandes). Je suppose que les autres solutions auraient également fonctionné.
Salman A

Réponses:

437

Vous devez utiliser l' WITH RECOVERYoption, avec votre RESTOREcommande de base de données , pour mettre votre base de données en ligne dans le cadre du processus de restauration.

Ceci est bien sûr uniquement si vous n'avez pas l'intention de restaurer des sauvegardes du journal des transactions, c'est-à-dire que vous souhaitez uniquement restaurer une sauvegarde de la base de données et ensuite pouvoir accéder à la base de données.

Votre commande devrait ressembler à ceci,

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE,RECOVERY

Vous pouvez avoir plus de succès à l'aide de l'assistant de restauration de base de données dans SQL Server Management Studio. De cette façon, vous pouvez sélectionner les emplacements de fichiers spécifiques, l'option de remplacement et l'option AVEC récupération.

John Sansom
la source
3
Je n'ai jamais eu à utiliser la déclaration de récupération lorsque je fais ce qu'il fait. AVEC REMPLACEMENT devrait suffire.
Sam
8
Oui, j'utilisais NORECOVERY mais le processus de restauration se bloque. En utilisant WITH RECOVERY, REPLACE, il ne
bloque
Cela a résolu mon problème. Nous avons eu une panne de SAN au milieu d'une restauration et c'était une solution rapide et propre.
Utilisateur enregistré le
J'ai eu un problème similaire aujourd'hui avec une base de données SQL Server 2005. Dans mon cas, j'ai dû ajouter ', RESTART' à la clause WITH, pour résoudre le problème. Il me donnait un message d'erreur indiquant que l'opération précédente n'avait pas réussi.
XpiritO
3
@FistOfFury Si une opération de restauration précédente sur la même base de données est dans un état suspendu / en veille, alors oui. Un simple arrêt / annulation de la restauration en cours devrait avoir le même effet.
John Sansom
692

J'ai eu cette situation en restaurant une base de données sur une instance SQL Server 2005 Standard Edition à l'aide de Symantec Backup Exec 11d. Une fois le travail de restauration terminé, la base de données est restée dans un état "Restauration". Je n'ai eu aucun problème d'espace disque - la base de données n'est tout simplement pas sortie de l'état "Restauration".

J'ai exécuté la requête suivante sur l'instance SQL Server et j'ai constaté que la base de données était immédiatement utilisable:

RESTORE DATABASE <database name> WITH RECOVERY
Evan Anderson
la source
4
Nous avons eu une base de données bloquée en restauration pendant 2 heures. Nous avons exécuté cette commande à partir d'une autre machine contre maître et cela nous a réparés. Merci!
Pete
11
+1, avec un gotcha. Lorsque j'ai exécuté cela, j'ai reçu un message d'erreur indiquant que la base de données était déjà entièrement récupérée. Mais il s'est tout de même révélé comme étant en état de «récupération». J'ai donc cliqué dessus avec le bouton droit dans Management Studio, appuyez sur Actualiser et c'était de retour à la normale.
dario_ramos
2
J'ai restauré à l'aide de l'assistant Mng Studio, entré un nouveau nom de base de données, mais par erreur, j'ai laissé les noms de fichiers identiques à ceux d'une base de données existante. J'ai reçu l'erreur "La restauration a échoué mais la queue du journal a réussi" et la base de données attachée à ces fichiers était bloquée dans un état de restauration. Cette commande semble avoir restauré la base de données à son état antérieur.
Chris
3
Cela a fonctionné. J'essayais de restaurer une sauvegarde dans une base de données latérale, mais ma base de données principale est entrée dans un état de restauration pour une raison quelconque. Cela a en fait récupéré ma base de données. Merci beaucoup!
Aravindh
2
Certaines valeurs par défaut de l'assistant de restauration SSMS laisseront la base de données source dans un état de restauration de sorte que vous pourrez continuer à restaurer diverses sauvegardes ou journaux sans craindre les utilisateurs, et cette commande est un moyen approprié de ramener la base de données à la normale une fois que vous avez terminé.
Tim Lehner
102

Voici comment procéder:

  1. Arrêtez le service (MSSQLSERVER);
  2. Renommez ou supprimez la base de données et les fichiers journaux (C: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ Data ...) ou partout où vous avez les fichiers;
  3. Démarrez le service (MSSQLSERVER);
  4. Supprimez la base de données avec problème;
  5. Restaurez à nouveau la base de données.
Tipu Delacablu
la source
Tipu, merci pour ça. J'ai eu un problème similaire à l'affiche d'origine, mais il a été causé par le manque d'espace disque du serveur lors de la restauration et a donc provoqué un état de restauration permanent.
Pauk
8
Pourquoi ne pas simplement supprimer la base de données? De cette façon, vous n'avez pas à arrêter le service.
ErikE
8
@ErikE Pour moi, le serveur SQL a déclaré qu'il ne pouvait pas supprimer une base de données au milieu d'une restauration, même si elle n'était pas vraiment en cours de restauration ....
Erik Philips
@ErikPhilips Dans ce cas, je suppose que l'on est de retour pour arrêter le service. Je me demande si cela se produit à chaque fois ou seulement dans certains cas de problème de restauration bloquée.
ErikE
5
Dans mon cas, il suffisait de supprimer la base de données qui était suspendue dans l'état "Restauration ..." avec la commande SQL drop database <dbname>dans une fenêtre de requête. J'ai ensuite cliqué avec le bouton droit sur Bases de données et sélectionné Actualiser, ce qui a supprimé l'entrée dans Management Studio. Ensuite, j'ai fait une nouvelle restauration qui a bien fonctionné ( notez que la mise hors ligne n'a pas fonctionné, un redémarrage du service SQL n'a pas fonctionné, un redémarrage du serveur n'a pas fonctionné aussi).
Matt
84

J'ai eu un incident similaire avec l'arrêt d'un serveur secondaire d'envoi de journaux. Après la commande de suppression du serveur de l'envoi de journaux et de l'arrêt de l'envoi de journaux du serveur principal, la base de données sur le serveur secondaire est restée bloquée dans l'état de restauration après la commande

RESTORE DATABASE <database name> WITH RECOVERY

Les messages de la base de données:

RESTORE DATABASE a traité correctement 0 pages en 18,530 secondes (0,000 Mo / sec).

La base de données était de nouveau utilisable après ces 18 secondes.

Hans
la source
6
Particulièrement utile lorsque vous avez déjà restauré la base de données mais que vous avez oublié l'option
RECOVERY
2
C'est tout ce dont j'avais besoin pour qu'il quitte l'état "Restauration" après avoir restauré une sauvegarde de cette base de données sous un autre nom de base de données. Merci beaucoup.
Sean
81

J'ai eu un problème similaire avec la restauration à l'aide de SQL Management Studio. J'ai essayé de restaurer une sauvegarde de la base de données dans une nouvelle avec un nom différent. Au début, cela a échoué et après avoir corrigé les noms de fichiers de la nouvelle base de données, il a été exécuté avec succès - en tout cas, le problème que je décris est réapparu même si j'ai bien compris la première fois. Ainsi, après la restauration, la base de données d'origine est restée avec un (Restauration ...) à côté de son nom. Compte tenu des réponses du forum ci-dessus (Bhusan's), j'ai essayé d'exécuter dans l'éditeur de requêtes sur le côté ce qui suit:

RESTORE DATABASE "[NAME_OF_DATABASE_STUCK_IN_RESTORING_STATE]"

qui a résolu le problème. J'avais des problèmes au début à cause du nom de la base de données qui contenait des caractères spéciaux. J'ai résolu ce problème en ajoutant des guillemets doubles - les guillemets simples ne fonctionneraient pas en donnant une erreur "syntaxe incorrecte près de ...".

C'était la solution minimale que j'ai essayée pour résoudre ce problème (base de données bloquée en état de restauration) et j'espère qu'elle pourra être appliquée à plus de cas.

Demetris Leptos
la source
2
Fonctionne parfaitement - sans avoir besoin de le démonter et de le remonter. 3 Dbs de 80+ Go chacun prennent du temps! Merci!
Christer
1
Je l'ai presque fait sur l'environnement de production. Je l'ai essayé sur local d'abord, je me suis retrouvé dans cette même situation et j'ai trouvé votre commentaire. Leçon apprise: utilisez des scripts et ne faites pas confiance à SSMS dans des situations importantes.
Mariusz
1
J'ai eu ce problème lors de la restauration d'une sauvegarde de fichier en copie seule d'une base de données vers une nouvelle base de données. La base de données d'origine a montré l'erreur. Cette solution a fonctionné et la réponse que j'ai reçue était "RESTORE DATABASE a traité avec succès 0 pages en 0,263 secondes (0,000 Mo / sec)." , il semble donc que SQL Server était juste confus quant à l'état de la base de données.
R. Schreurs
1
A fonctionné pour moi, mais uniquement lorsque j'ai supprimé les guillemets doubles - je n'avais que [MY_DB_NAME] comme paramètre.
StackOverflowUser
34

OK, j'ai un problème similaire et exactement comme dans le cas de Pauk, il a été causé par le manque d'espace disque du serveur lors de la restauration et a donc provoqué un état de restauration permanent. Comment mettre fin à cet état sans arrêter les services SQL Server?

J'ai trouvé une solution :)

Drop database *dbname*
ErikE
la source
29

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

RESTORE DATABASE YourDB WITH RECOVERY
GO

S'il est nécessaire de restaurer plusieurs fichiers, les commandes CLI nécessitent respectivement AVEC NORECOVERY et WITH RECOVERY - seul le dernier fichier dans la commande doit avoir AVEC RECOVERY pour ramener la base de données en ligne:

RESTORE DATABASE YourDB FROM DISK = 'Z:\YourDB.bak'
WITH NORECOVERY
GO
RESTORE LOG YourDB FROM DISK = 'Z:\YourDB.trn'
WITH RECOVERY
GO

Vous pouvez également utiliser l'assistant SQL Server Management Studio:

entrez la description de l'image ici

Il existe également un processus de restauration virtuelle, mais vous devrez utiliser des solutions tierces. Habituellement, vous pouvez utiliser une sauvegarde de base de données comme base de données en ligne en direct. ApexSQL et Idera ont leurs propres solutions. Revue par SQL Hammer sur ApexSQL Restore . La restauration virtuelle est une bonne solution si vous avez affaire à un grand nombre de sauvegardes. Le processus de restauration est beaucoup plus rapide et peut également économiser beaucoup d'espace sur le lecteur de disque. Vous pouvez jeter un œil sur l' infographie ici pour une comparaison.

Marko Krstic
la source
23

Cela peut être assez évident, mais cela m'a fait trébucher tout à l'heure:

Si vous effectuez une sauvegarde de journal de fin, ce problème peut également être dû au fait que cette option est cochée dans l'assistant de restauration SSMS - «Laisser la base de données source à l'état de restauration (AVEC NORCOVERY)»

entrez la description de l'image ici

TrailJon
la source
7
Si vous êtes dans cet état, alors votre meilleur pari est de: 1. Cliquer avec le bouton droit sur la base de données, aller à Tâches-> Restaurer-> Journaux de transactions 2. Trouver le fichier de sauvegarde qui a été utilisé pour la sauvegarde du journal de queue 3. Restaurer la sauvegarde La restauration doit réussir et remettre la base de données en ligne.
Ryan Gross
16

J'ai compris pourquoi.

Si le client qui a émis la RESTORE DATABASEcommande se déconnecte pendant la restauration, la restauration sera bloquée.

Il est étrange que le serveur, lorsqu'il est invité à restaurer une base de données par une connexion client, ne termine pas la restauration à moins que le client ne reste connecté tout le temps.

Ian Boyd
la source
10
Toutes les commandes SQL nécessitent que le client reste connecté tout le temps.
mrdenny
2
@mrdenny: j'aurais supposé que les modifications sont annulées lorsqu'un client se déconnecte.
Ian Boyd
J'ai le même problème lors de l'exécution de cette commande avec le pilote PHP PDO de Microsoft. Cependant, lors de l'exécution avec Microsoft SQL Server Management Studio, cela fonctionne très bien. Je me demande comment connecter mon application php tout le temps?
channa ly
Arrivé ici aussi, DB bloqué dans la restauration / mono-utilisateur après une éventuelle interruption de connexion. Tué tous les autres SPID de la nouvelle session mais toujours bloqué. A pu supprimer la base de données comme solution.
crokusek
10

celui-ci a fonctionné:

http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/8dd1b91d-3e14-4486-abe6-e3a550bfe457

J'ai eu une situation où ma base de données montrait un état de restauration et je ne pouvais pas exécuter de requêtes et ne pouvais pas me connecter avec notre logiciel.

Ce que j'ai fait pour sortir de cette situation, c'est:

  1. Arrêtez tous les services liés à SQL à partir des services Windows.

  2. J'ai ouvert le dossier DATA où se trouvent les fichiers Ldf et Mdf dans le répertoire SQL, normalement son genre: "C: \ Program Files *********** \ MSSQL \ DATA

  3. J'ai ensuite copié les fichiers Ldf et Mdf de la base de données: [nom db] .mdf et [nom db] _log.ldf

J'ai copié ces deux fichiers dans un autre dossier.

  1. Ensuite, j'ai redémarré tous les services liés à SQL (à l'étape 1) à partir des services Windows.

  2. Démarré mon studio MS SQL Management avec une connexion normale.

  3. Faites un clic droit sur la base de données coupable et appuyez sur SUPPRIMER (pour supprimer la base de données).

  4. Tous les fichiers LDF et MDF liés à cette base de données sont passés du dossier DATA (mentionné à l'étape 2).

  5. Création d'une nouvelle base de données avec le même nom (même nom que celui que j'ai supprimé à l'étape 6 - la base de données coupable).

  6. Puis [nom de la base de données] -> clic droit -> tâches -> Déconnecter.

  7. J'ai ensuite copié les deux fichiers (de l'étape 3) dans le dossier DATA (étape 2).

  8. [nom de la base de données] -> clic droit -> tâches -> Mettre en ligne.

Ameen Abuhilal
la source
Cela a également fonctionné pour moi. À l'étape 10, j'ai choisi d'écraser les fichiers existants.
Divi perdomo
8

J'ai eu un . dans mon nom de base de données, et la requête n'a pas fonctionné à cause de cela (en disant syntaxe incorrecte près de '.') Ensuite, j'ai réalisé que j'avais besoin d'un crochet pour le nom:

RESTORE DATABASE [My.DB.Name] WITH RECOVERY
Ashkan Sirous
la source
5

Dans mon cas, il suffisait de supprimer la base de données qui pendait dans l'état "Restauration ..." avec la commande SQL

 drop database <dbname> 

dans une fenêtre de requête.

J'ai ensuite cliqué avec le bouton droit sur Bases de données et sélectionné Actualiser, ce qui a supprimé l'entrée dans Management Studio. Ensuite, j'ai fait une nouvelle restauration qui a bien fonctionné (notez que la mise hors ligne ne fonctionnait pas, un redémarrage du service SQL ne fonctionnait pas, un redémarrage du serveur ne fonctionnait pas aussi bien).

Mat
la source
3

J'ai eu ce problème lorsque j'ai également reçu une erreur TCP dans le journal des événements ...

Déposez la base de données avec sql ou faites un clic droit dessus dans le gestionnaire "supprimer" Et restaurer à nouveau.

J'ai en fait commencé à le faire par défaut. Créez un script pour la suppression de la base de données, recréez puis restaurez.

ZeusT
la source
3

Par défaut, tout RESTORE DATABASEest livré avec la RECOVERYconfiguration. Les options «NORECOVERY» indiquent essentiellement à SQL Server que la base de données attend plus de fichiers de restauration (peut être un fichier DIFF et un fichier LOG et, si possible, inclure un fichier de sauvegarde du journal de fin). Les options 'RECOVERY', terminent toutes les transactions et laissent la base de données prête à effectuer des transactions.

Donc:

  1. si votre base de données est configurée avec le modèle de récupération SIMPLE , vous ne pouvez effectuer une restauration COMPLÈTE avec NORECOVERYoption que lorsque vous disposez d'une sauvegarde DIFF . Aucune sauvegarde de LOG n'est autorisée dans la base de données du modèle de récupération SIMPLE .
  2. Sinon, si votre base de données est configurée avec le modèle de récupération FULL ou BULK-LOGGED , vous pouvez effectuer une restauration FULL suivie d'une NORECOVERYoption, puis effectuer un DIFF suivi NORECOVERYet enfin, effectuer une restauration LOG avec RECOVERYoption.

N'oubliez pas, LA DERNIÈRE REQUÊTE DE RESTAURATION DOIT AVOIR UNE RECOVERYOPTION . Cela pourrait être explicite ou non. Dans les thermes de T-SQL, la situation:

1.

 USE [master]
    GO
    RESTORE DATABASE Database_name 
    FROM DISK = N'\\path_of_backup_file.bak WITH FILE = 1, [REPLACE],NOUNLOAD, 
    RECOVERY -- This option could be omitted.
    GO

L'option WITH REPLACE doit être utilisée avec prudence car elle peut entraîner une perte de données

Ou, si vous effectuez une sauvegarde COMPLÈTE et DIFF, vous pouvez utiliser ceci

   USE [master]
    GO
    RESTORE DATABASE Database_name
      FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1, 
       NOUNLOAD,NORECOVERY
    GO
    RESTORE DATABASE Database_name
      FROM DISK =N'\\path_of_**diff**backup_file.bak' WITH FILE = 1, 
     NOUNLOAD, RECOVERY
    GO

 2. USE [master]
    GO
   -- Perform a Tail-Log backup, if possible. 
   BACKUP LOG Database_name
   GO
   -- Restoring a FULL backup
   RESTORE DATABASE Database_name
    FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1, 
     NOUNLOAD,NORECOVERY
  GO 
  -- Restore the last DIFF backup
  RESTORE DATABASE Database_name
    FROM DISK = N'\\path_of_DIFF_backup_file.bak' WITH FILE = 1,
     NORECOVERY,NOUNLOAD
  GO
  -- Restore a Log backup
  RESTORE LOG Database_name
    FROM DISK = N'path_of_LOG_backup_file.trn' WITH FILE = 2,
    RECOVERY, NOUNLOAD
  GO

Bien sûr, vous pouvez effectuer une restauration avec l'option STATS = 10 qui indique à SQL Server de signaler tous les 10% achevés.

Si vous préférez, vous pouvez observer le processus ou restaurer dans une requête en temps réel. Comme suit:

USE[master]
GO
SELECT session_id AS SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time 
    FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a 
        WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
GO

J'espère que cette aide.

BMDaemon
la source
2

Il peut également y avoir un problème lors de la suppression d'une base de données bloquée si l'instantané est activé. Pour moi, cela a fonctionné:

  1. J'ai d'abord suivi les étapes de Tipu Delacablu (lire quelques articles)
  2. exécuter la commande: drop database [your database], qui vous donnera une erreur vous indiquant le nom de la base de données de clichés
  3. exécuter la commande: supprimez la base de données [base de données d'instantanés], puis réexécutez la commande à l'étape 2.
Communauté
la source
1

J'ai le cas MyDbName (Restoring ...) en raison de la limite de licence SQL Express.

Dans le fichier journal, j'ai trouvé ceci:

CREATE DATABASE ou ALTER DATABASE a échoué car la taille de base de données cumulée résultante dépasserait votre limite de licence de 10240 Mo par base de données.

Donc, si vous essayez de restaurer une base de données plus grande, vous devez par exemple basculer votre serveur SQL Express vers l'édition Developer .

Dmitry Pavlov
la source
C'était la base de données TFS et le client TFS m'a déjà dit: Base de données pleine.
cskwg
1

Ran dans un problème similaire lors de la restauration de la base de données en utilisant SQL Server Management Studio et il est resté bloqué en mode de restauration. Après plusieurs heures de suivi des problèmes, la requête suivante a fonctionné pour moi. La requête suivante restaure la base de données d'une sauvegarde existante à un état précédent. Je crois que le hic, c'est d'avoir le fichier .mdf et .log dans le même répertoire.

RESTORE DATABASE aqua_lc_availability
FROM DISK = 'path to .bak file'
WITH RECOVERY
Ujjwal
la source
0
  1. Laissez d'abord vérifier et exécuter le service d'agent SQL.
  2. Utilisation du T-SQL suivant:

    SELECT nom de fichier FROM master.sys.sysaltfiles WHERE dbid = DB_ID ('db_name');

  3. Utilisation continue de T-SQL:

    RESTORE DATABASE FROM DISK = 'DB_path' AVEC RESTART, REPLACE;

J'espère que cette aide!

Trung Nguyen
la source
0

Toutes les options basées sur WITH RECOVERY ne fonctionnaient pas pour moi.

Ce qui a été fait pour effectuer la restauration complète depuis Management Studio.

USE [master]
RESTORE DATABASE Sales_SSD
FROM  DISK = N'D:\databaseBackups02\Daily_Sales_20150309_0941.bak' 
WITH  FILE = 1,  
MOVE N'Sales_Data' TO N'C:\Data\SSD\Sales.mdf',  
MOVE N'Sales_Log' TO N'C:\Data\SSD\Sales_1.ldf',  
NOUNLOAD,  REPLACE,  STATS = 5
earthling42
la source
0

J'ai eu le même problème ... bien que je ne sache pas pourquoi ma base de données a rencontré ce problème car mon lecteur n'était pas plein ... C'est comme s'il était corrompu ou quelque chose. J'ai essayé toutes les solutions ci-dessus, aucune d'entre elles ne fonctionnait pleinement, je pensais surtout que la suggestion d'arrêter le service et de supprimer les fichiers mdf et ldf fonctionnerait ... mais elle a quand même gelé lors de la restauration?

J'ai fini par résoudre ce problème en supprimant les fichiers comme mentionné, mais au lieu d'essayer de restaurer à nouveau la base de données, j'ai copié des fichiers .mdf et .ldf frais et les ai joints à l'aide de l'assistant de pièce jointe frontale. Le soulagement, ça a marché !!

Il a fallu FOREVER pour copier sur les nouveaux fichiers car j'utilise une machine virtuelle ... donc copier et coller en utilisant le presse-papiers a pris comme une heure, donc je ne recommanderais cela que comme une dernière tentative.

Anthony Griggs
la source
0

Ce qui m'a arrangé, c'est

  1. arrêter l'instance
  2. création d'une sauvegarde des fichiers .mdf et .ldf dans le dossier de données
  3. Redémarrez l'instance
  4. supprimer la restauration de la base de données bloquée
  5. remettez les fichiers .mdf et.ldf dans le dossier de données
  6. Attachez l'instance aux fichiers .mdf et .ldf
ChadJPetersen
la source
0
RESTORE DATABASE {DatabaseName}
   FROM DISK = '{databasename}.bak'
   WITH REPLACE, RECOVERY
Rony Barua
la source
Veuillez indiquer les informations supplémentaires fournies par cette réponse par rapport à la réponse plus ancienne, acceptée et très appréciée. Cela aiderait à éviter l'impression de l'avoir copié dans l'espoir d'obtenir une réputation. De plus, les réponses en code uniquement (ce qui est la principale différence visible) ne sont pas appréciées ici, car elles donnent la mauvaise impression que StackOverflow est un service d'écriture de code gratuit,
Yunnosch
J'ai corrigé le formatage, juste pour rendre la similitude avec la réponse plus ancienne plus évidente. Mais vous pouvez apprendre à le faire ici stackoverflow.com/editing-help au cas où vous essayez de faire des réponses plus lisibles à l'avenir.
Yunnosch
0

Utilisez la commande suivante pour résoudre ce problème

RESTORE DATABASE [DatabaseName] WITH RECOVERY
Sumant Singh
la source