2009-03-24 2 views
0

Я написал небольшое приложение, которое может восстановить базу данных (C# и SQL2005), но после того, как я получил доступ к базе данных, я не могу ее удалить - она ​​говорит, что она используется .. Я думаю, она должна делать с объединением SQLconnection, но могу ли я заставить его восстановить базу данных?Как заставить SQLconnection освободить базу данных?

ответ

1

В строке подключения укажите «Объединение = False».

0

Если вы utlise

Using SQLConnection 
    '' do your stuff here 
End Using 

Я думаю, что это то заставляет освобождение ресурсов после того, как он выходит из

0

Вызов «USE SomeOtherDB» (например, Master), чтобы закрыть собственное соединение, или один из

ALTER DATABASE SET SINGLE_USER

или

ALTER DATABASE SET SINGLE_USER с ROLLBACK_IMMEDIATE

, чтобы закрыть другие соединения. Первый ждет соединений для завершения, второй - немедленный.

1

Утилизируйте объект SqlConnection.

0

"Вызов "USE SomeOtherDB"(например Master), чтобы закрыть собственное соединение, или один из"

//on master ... CREATE 
using (var cnn = new SqlConnection(MASTER)) 
{ 
    cnn.Open(); 
    var createDbCmd = new SqlCommand(string.Format("create database [{0}]", db), cnn).ExecuteNonQuery(); 
    cnn.Close(); 
} 
using (var cnn = new SqlConnection(tempDB)) 
{ 
    cnn.Open(); 
    var createTbl = new SqlCommand(string.Format("create table t (t int)"), cnn).ExecuteNonQuery(); 
    var dropTbl = new SqlCommand(string.Format("drop table t"), cnn).ExecuteNonQuery(); 
    //Do additional stuf 
    var userMaster = new SqlCommand(string.Format("use master"), cnn).ExecuteNonQuery(); 
    cnn.Close(); 

} 
//on master ... CREATE 
using (var cnn = new SqlConnection(MASTER)) 
{ 
    cnn.Open(); 
    var dropDbCmd = new SqlCommand(string.Format("drop database [{0}]", db), cnn).ExecuteNonQuery(); 
    cnn.Close(); 

} 
Смежные вопросы