为什么Sql Server数据库忙?

时间:2014-07-08 17:28:19

标签: c# sql-server

我正在尝试创建一个数据库,对其运行一些测试,然后删除数据库:

namespace TestConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            const string testConnectionString = @"Server=localhost\SQL2014EXPRESS64; Database=RepoTest; Trusted_Connection=True;";
            const string masterConnectionString = @"Server=localhost\SQL2014EXPRESS64; Database=master; Trusted_Connection=True;";

            // connect to master and create RepoTest db
            using (var connection = new SqlConnection(masterConnectionString))
            using (var command = new SqlCommand("CREATE DATABASE RepoTest", connection))
            {
                connection.Open();
                command.ExecuteNonQuery();
            }

            // connect to RepoTest and create some new tables
            using (var connection = new SqlConnection(testConnectionString))
            using (var command = new SqlCommand("CREATE TABLE Test(ID INT NOT NULL)", connection))
            {
                connection.Open();
                command.ExecuteNonQuery();
            }

            // connect to master and delete RepoTest db
            using (var connection = new SqlConnection(masterConnectionString))
            using (var command = new SqlCommand("DROP DATABASE RepoTest", connection))
            {
                connection.Open();
                command.ExecuteNonQuery();
            }
        }
    }
}

但是在尝试删除测试数据库时我得到了这个例外:

  

System.Data.dll中发生未处理的“System.Data.SqlClient.SqlException”类型异常
  附加信息:无法删除数据库“RepoTest”,因为它当前正在使用中。

但我希望它不再被使用,因为使用该数据库的部分在一个使用块中,所以我希望关闭连接并完成操作,如果不是这样的话我可以用它来完成当前进程时删除数据库吗?

1 个答案:

答案 0 :(得分:0)

使用testConnectionString的连接对象将使用池 通过添加Pooling=false

禁用该连接字符串上的池
const string testConnectionString = @"Server=.; Database=RepoTest; Trusted_Connection=True;Pooling=false;";