0

我编写了一个小应用程序,可以恢复数据库(C# 和 SQL2005),但是在我访问数据库后,我无法删除它 - 它说它正在使用中。我想这与SQLconnection-pooling,但我可以强制它释放数据库吗?

4

5 回答 5

2

在连接字符串中指定“Pooling=False”。

于 2009-03-24T12:39:31.663 回答
1

释放您的 SqlConnection 对象。

于 2009-03-24T13:09:37.783 回答
0

如果你利用

Using SQLConnection
    '' do your stuff here
End Using

我认为这会在它退出后强制释放资源

于 2009-03-24T12:42:10.783 回答
0

调用“USE SomeOtherDB”(例如 Master)来关闭您自己的连接,或其中之一

ALTER DATABASE SET SINGLE_USER

或者

ALTER DATABASE SET SINGLE_USER WITH ROLLBACK_IMMEDIATE

关闭其他连接。第一个等待连接结束,第二个是立即的。

于 2009-03-24T12:44:04.647 回答
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();

}
于 2013-06-16T01:25:23.597 回答