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

Comments

Post a Comment

Popular posts from this blog

Failed to execute the package or element. Build errors were encountered

On-premises data gateway December release