Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么sqlConnection.Close()不关闭登录?_Sql Server_Database Connection_Smo - Fatal编程技术网

Sql server 为什么sqlConnection.Close()不关闭登录?

Sql server 为什么sqlConnection.Close()不关闭登录?,sql-server,database-connection,smo,Sql Server,Database Connection,Smo,我们有单元测试来测试我们的数据库安装和卸载功能是否成功工作。 单元测试使用SqlClient.SqlConnection类在之前、期间和之后检查数据库内容 我们的问题是,在使用SqlClient.SqlConnection之后,卸载的drop login部分失败,因为它声称用户当前已登录。尽管我们调用了SqlConnection.Close(),但登录名似乎仍然处于打开状态 我们的代码看起来有点像这样: InstallTables(); // function uses smo to crea

我们有单元测试来测试我们的数据库安装和卸载功能是否成功工作。 单元测试使用SqlClient.SqlConnection类在之前、期间和之后检查数据库内容

我们的问题是,在使用SqlClient.SqlConnection之后,卸载的drop login部分失败,因为它声称用户当前已登录。尽管我们调用了SqlConnection.Close(),但登录名似乎仍然处于打开状态

我们的代码看起来有点像这样:

InstallTables();  // function uses smo to create tables in a database.
string connString = CreateLogin("userName", "password");  // create login with smo

// Test the returned connection string connects to the database
using (SqlConnection con = new SqlConnection(connString))
{
    con.Open();
    //test code to read the DB version out of a table
    //Dispose calls con.Close() - I have also tried calling it explicitly
}

DropTables();  // uses smo to drop tables from the database
DropLogin("userName", "password");   // uses smo to drop the login
DropLogin失败,出现以下异常: System.Data.SqlClient.SqlException:无法删除登录名“engageSecurity\u unittest\u 129418264074692569”,因为用户当前已登录

如果我删除所有SqlConnection代码,直到完成DropLogin之后,那么一切都会正常运行

有人知道我调用SqlConnection.Close()时用户为什么没有注销吗


这与连接池有关吗?

除非您在连接字符串中显式禁用连接池,否则我猜即使您正在处理连接,它在连接池中仍然是活动的(如果您决定重新使用它):


尝试禁用连接池(通过在连接字符串中添加
Pooling=false;
),看看会发生什么。

连接池=false的替代方法是和。

谢谢Justin-连接字符串中的Pooling=false成功了!考虑使用<代码> SqLo连接。CultCurbs/Cord>,而不是彻底禁用连接池。看看,也看看。