J'essaie de restaurer mon SQL en utilisant le fichier bak
Je reçois une erreur
L'accès exclusif n'a pas pu être obtenu car la base de données est en cours d'utilisation
J'ai essayé
USE [master]
ALTER DATABASE myDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
et lancez la requête
USE [master] RESTORE DATABASE myDB
FROM DISK = 'C:\MyDatabase.bak' WITH FILE = 1, NOUNLOAD, STATS = 10
J'ai également essayé de l'assistant de restauration avec le même résultat.
L'accès exclusif n'a pas pu être obtenu car la base de données est en cours d'utilisation.
Méthode 1
declare @sql as varchar(20), @spid as int
select @spid = min(spid) from master..sysprocesses where dbid = db_id('<database_name>') and spid != @@spid
while (@spid is not null)
begin
print 'Killing process ' + cast(@spid as varchar) + ' ...'
set @sql = 'kill ' + cast(@spid as varchar)
exec (@sql)
select
@spid = min(spid)
from
master..sysprocesses
where
dbid = db_id('<database_name>')
and spid != @@spid
end
print 'Process completed...'
Méthode 2
alter database database_name
set offline with rollback immediate
alter database database_name
set online
aller
Vous n'avez pas besoin d'écrire une requête pour résoudre ce problème ... J'ai eu plusieurs fois le même problème et je l'ai résolu de la manière suivante: Lorsque vous restaurez la base de données
La base de données de restauration commence ...
N'importe qui ayant eu les problèmes énumérés ci-dessus, et aucun des conseils ne fonctionne .. Il suffit de désactiver la sauvegarde Taillog sous "Options" ..
Si vous activez (ou laissez) cette option, le journal de bord de la base de données source sera lui-même consigné (même si la source de la restauration est simplement un fichier). Par conséquent, si la base de données source est en cours d'utilisation (ce qui est normalement le cas si vous effectuez une copie d'une base de données de production), la restauration échoue.
J'avais ce problème lorsque j'essayais de restaurer une sauvegarde de production sur un serveur de développement contenant déjà la base de données. Je voulais restaurer une copie, ce que j'ai fait en changeant le nom de la base de données cible, mais le problème concernait en fait les fichiers. Par défaut, il essayait d'écraser les fichiers déjà présents. J'ai résolu le problème en cochant la case "Déplacer tous les fichiers dans un dossier" dans la page "Fichiers" de la boîte de dialogue de restauration et en choisissant un nouveau répertoire pour éviter les collisions de fichiers.