Usually, whenever I restore a backup of my database in SQL Server I am presented with the following error:
Msg 3101, Level 16, State 1, Line 1Exclusive access could not be obtained because the database is in use.Msg 3013, Level 16, State 1, Line 1RESTORE DATABASE is terminating abnormally.
Usually, to get around this I just restart the server. This was fine when we were developing on our local server instance on our development machines. But we have a few programmers that need to make changes to the database and the logistics of having everyone script their changes and drop them into Subversion was becoming a nightmare. Regardless our simple solution was to put it on a shared server in the office and backup the server occasionally, in case someone screwed up the data.
Well I screwed up some data and needed to restore. Unfortunately, I have another co-worker in the office who is working on another project and is using the same database server (different database) for development. To be nice I'd want to restore without restarting the SQL Server and possibly disrupting his work.
What I need to do is find all the connection processes to the database and kill them:
Use MasterGoDeclare @dbname sysnameSet @dbname = 'databaseName'Declare @spid intSelect @spid = min(spid) from master.dbo.sysprocesseswhere dbid = db_id(@dbname)While @spid Is Not NullBegin Execute ('Kill ' + @spid) Select @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@dbname) and spid > @spidEnd
Now I can immediately restore:
USE MasterGORESTORE DATABASE [databaseName] FROM DISK = N'physical disk path to the backup file.bak' --example path: c:\program files\microsoft sql server\mssql\backup\databaseName.bakWITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10GO
This method works best in a development environment with minimum developer connections. In production/staging environments refer to your database administrator for best practices.
Related Links
How to Gain Exclusive Access to SQL Server 2005 DB to restore?
Remember Me
a@href@title, b, blockquote@cite, em, i, strike, strong, sub, super, u