Restore of database 'DataBase_Name' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)
TITLE: Microsoft SQL Server Management Studio
------------------------------
Restore of database 'DataBase_Name' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------
ADDITIONAL INFORMATION:
System.Data.SqlClient.SqlError: Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.SmoExtended)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=12.0.2000.8+((SQL14_RTM).140220-1752)&LinkId=20476
------------------------------
BUTTONS:
OK
------------------------------
Procedure 1:
1. Right click Databases
2. Restore Database...
3. [General] Source from Device, select the bak file
4. [General] Change the Destination database name to a new name
5. [Files] Change mdf and ldf Restore As paths to a different, new path
6. [Options] (unnecessary on the other computer) Check Overwrite the existing database (WITH_REPLACE)
7. [Options] (unnecessary on the other computer) Check Close existing connections to destination database
8. Click OK
Procedure 2:
Step 1:
USE master
GO
ALTER DATABASE DataBase_Name
SET SINGLE_USER
--This rolls back all uncommitted transactions in the db.
WITH ROLLBACK IMMEDIATE
GO
Step 2:
RESTORE DATABASE DataBase_Name FROM DISK = 'C:\DataBase_Name.BAK' WITH replace
GO
Step 3:
ALTER DATABASE DataBase_Name SET MULTI_USER;
GO
Procedure 3:
ALTER DATABASE DataBase_Name
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE DataBase_Name
SET ONLINE
GO
Procedure 4:
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...'
Procedure 5:
Step 1:
Drop all the connections accessing the database. This can be done either killing the connections or by putting databases in single user mode.
Execute SP_WHO2 to find all the connections to the database or we can also use activity monitor dashboard to find those connections.
Step 2:
Kill all the connections accessing database using below script.
Kill SPID — SPID is the session ID of the user process
Step 3:
Setting the database to single user mode
Use master
GO
ALTER DATABASE DataBase_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
RESTORE DATABASE DataBase_Name FROM DISK = ‘C:\DataBase_Name.BAK’
GO
ALTER DATABASE DataBase_Name set multi_user
GO
------------------------------
Restore of database 'DataBase_Name' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------
ADDITIONAL INFORMATION:
System.Data.SqlClient.SqlError: Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.SmoExtended)
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=12.0.2000.8+((SQL14_RTM).140220-1752)&LinkId=20476
------------------------------
BUTTONS:
OK
------------------------------
Procedure 1:
1. Right click Databases
2. Restore Database...
3. [General] Source from Device, select the bak file
4. [General] Change the Destination database name to a new name
5. [Files] Change mdf and ldf Restore As paths to a different, new path
6. [Options] (unnecessary on the other computer) Check Overwrite the existing database (WITH_REPLACE)
7. [Options] (unnecessary on the other computer) Check Close existing connections to destination database
8. Click OK
Procedure 2:
Step 1:
USE master
GO
ALTER DATABASE DataBase_Name
SET SINGLE_USER
--This rolls back all uncommitted transactions in the db.
WITH ROLLBACK IMMEDIATE
GO
Step 2:
RESTORE DATABASE DataBase_Name FROM DISK = 'C:\DataBase_Name.BAK' WITH replace
GO
Step 3:
ALTER DATABASE DataBase_Name SET MULTI_USER;
GO
Procedure 3:
ALTER DATABASE DataBase_Name
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE DataBase_Name
SET ONLINE
GO
Procedure 4:
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...'
Procedure 5:
Step 1:
Drop all the connections accessing the database. This can be done either killing the connections or by putting databases in single user mode.
Execute SP_WHO2 to find all the connections to the database or we can also use activity monitor dashboard to find those connections.
Step 2:
Kill all the connections accessing database using below script.
Kill SPID — SPID is the session ID of the user process
Step 3:
Setting the database to single user mode
Use master
GO
ALTER DATABASE DataBase_Name SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
RESTORE DATABASE DataBase_Name FROM DISK = ‘C:\DataBase_Name.BAK’
GO
ALTER DATABASE DataBase_Name set multi_user
GO
Thanks for feedback
ReplyDeleteThanks for your feedback.
ReplyDeleteNice information
ReplyDelete