Как заставить SQLconnection освободить базу данных? - PullRequest
0 голосов
/ 24 марта 2009

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

Ответы [ 5 ]

1 голос
/ 24 марта 2009

Удалите свой объект SqlConnection.

1 голос
/ 24 марта 2009

Укажите «Pooling = False» в строке подключения.

0 голосов
/ 16 июня 2013

"Позвоните" 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();

}
0 голосов
/ 24 марта 2009

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

ALTER DATABASE SET SINGLE_USER

или

ALTER DATABASE SET SINGLE_USER WITH ROLLBACK_IMMEDIATE

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

0 голосов
/ 24 марта 2009

Если вы утвердите

Using SQLConnection
    '' do your stuff here
End Using

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

...