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
It's so nice article thank you for sharing a valuable content. SQL server dba Online Training Bangalore
ReplyDeleteThanks for feedback
ReplyDeleteYour blog is in a convincing manner, thanks for sharing such an information with lots of your effort and time
ReplyDeletesql dba training
sql server dba online training
Thanks for your feedback.
ReplyDeleteThanks for your feedback
ReplyDelete