web-dev-qa-db-fra.com

La sauvegarde / restauration à partir d'une base de données différente entraînant l'échec de la restauration de l'accès exclusif n'a pas pu être obtenu

J'ai une base de données A. J'ai pris une sauvegarde de la base de données A appelée A.bak. J'ai créé une nouvelle base de données B. Maintenant, je fais un clic droit et restaure B à partir de A.bak. Dans la boîte de dialogue de restauration, j'ai vérifié le remplacement de la base de données existante et la modification du nom de fichier logique de C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\DATA\A.mdf à C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\DATA\B.mdf et a fait de même avec le fichier ldf. Mais je reçois

Exclusive access could not be obtained because the database is in use.

A également essayé,

ALTER DATABASE [B] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

Aussi sp_who2, il n'y avait pas de connexion existante de [B]

24
user960567

Une cause de la tentative d'obtention d'un accès exclusif provient de la page d'options de la boîte de dialogue de restauration dans SQL Server 2012 Management Studio. Il activera le journal de fin et laissera les options d'état de restauration pour la base de données SOURCE. Ainsi, il tentera d'obtenir un accès exclusif à la base de données source (dans ce cas A) afin d'effectuer cette action. Si vous désactivez l'option de journal de fin, vous constaterez que l'opération fonctionne beaucoup plus facilement.

69

La réponse était très simple,

Exécutez cette commande pour récupérer les LogicalNames,

RESTORE FILELISTONLY FROM DISK = 'C:\Users\MyUSer\Desktop\A.bak'

Ensuite, mettez le dans LogicalName ci-dessous,

RESTORE DATABASE B
   FROM DISK = 'C:\Users\MyUSer\Desktop\A.bak'
   WITH 
   MOVE 'LogicalName' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\Data\B.mdf', 
   MOVE 'LogicalName_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLSERVER2012\MSSQL\Data\B.ldf'
GO

Notez que vous devrez peut-être modifier le chemin d'accès. Liens utiles,

Comment restaurer sur une autre base de données sur un serveur SQL?

http://technet.Microsoft.com/en-us/library/ms186390.aspx

5
user960567

B. La boîte de dialogue "Restaurer la base de données" s'affiche sur la page Général 1. Le nom de la base de données de restauration apparaît dans la zone de liste Vers la base de données. Pour créer une nouvelle base de données, entrez son nom dans la zone de liste.

  1. Sélectionnez "Depuis l'appareil"

  2. Cliquez sur le bouton pour afficher la boîte de dialogue "Spécifier la sauvegarde"

  3. Cliquez sur "Ajouter" pour parcourir le fichier .bak à partir du répertoire et cliquez sur OK

1
Saim Boy