如何强制SQLconnection发布数据库?

时间:2009-03-24 12:36:12

标签: c# dispose sqlconnection

我编写了一个小应用程序,可以恢复数据库(C#和SQL2005),但在我访问数据库后,我不能删除它 - 它说它正在使用中.. 我想这与SQLconnection-pooling有关,但是我可以强制它重新启动数据库吗?

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

处理您的SqlConnection对象。

答案 2 :(得分:0)

如果你使用

Using SQLConnection
    '' do your stuff here
End Using

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

答案 3 :(得分:0)

调用“USE SomeOtherDB”(例如Master)关闭您自己的连接,或者

之一

ALTER DATABASE SET SINGLE_USER

ALTER DATABASE使用ROLLBACK_IMMEDIATE设置SINGLE_USER

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

答案 4 :(得分:0)

“呼叫”使用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();

}