Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exclusive access could not be obtained because the database is in use

I'm using following code to restore databases,

void Restore(string ConnectionString, string DatabaseFullPath, string backUpPath) {     string sRestore =         "USE [master] RESTORE DATABASE [" + DatabaseFullPath + "] FROM DISK = N'" + backUpPath + "' WITH  FILE = 1,  NOUNLOAD,  STATS = 10";      using (SqlConnection con = new SqlConnection(ConnectionString))     {         con.Open();         SqlCommand cmdBackUp = new SqlCommand(sRestore, con);         cmdBackUp.ExecuteNonQuery();     } } 

but I receive below exception

"Exclusive access could not be obtained because the database is in use. RESTORE DATABASE is terminating abnormally. Changed database context to 'master'." 

How can I fix it ?

like image 269
Mohammad Dayyan Avatar asked Oct 28 '10 19:10

Mohammad Dayyan


1 Answers

A restore can only happen if the database does not have any connections to it (besides yours). The easy way on a MS SQL Server to kick all users off is:

ALTER DATABASE [MyDB] SET Single_User WITH Rollback Immediate GO 

Now, you can perform your restore with impunity. Make sure you set it back to Multi-user mode when you're done with the restore:

ALTER DATABASE [MyDB] SET Multi_User GO 
like image 59
KeithS Avatar answered Sep 23 '22 02:09

KeithS