У нас есть модульные тесты для проверки того, что наши функции установки и удаления базы данных успешно работают. В модульных тестах используется класс SqlClient.SqlConnection для проверки содержимого базы данных до, во время и после.Почему sqlConnection.Close() не закрывает логин?
Наша проблема заключается в том, что после использования SqlClient.SqlConnection, то падение Войти часть деинсталлировать терпит неудачу, потому что он утверждает, что пользователь в настоящее время вошли в систему. Даже если мы назвали 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_unittest_129418264074692569», как пользователь в настоящее время вошли в систему .
Если я удалю весь код SqlConnection до тех пор, пока DropLogin, то все будет работать нормально.
Кто-нибудь знает, почему пользователь не вышел из системы, когда я вызываю SqlConnection.Close()?
Это как-то связано с объединением соединений?
Thanks Justin - Pooling = false в строке подключения сделал трюк! – GarethOwen
Рассмотрите возможность использования 'SqlConnection.ClearPool' вместо прямого отключения пула соединений. Взгляните на [ответ ниже] (http://stackoverflow.com/questions/4959885/why-does-sqlconnection-close-not-close-the-login/23243606#23243606), а также см. [Этот вопрос] (http://stackoverflow.com/questions/1145892/how-to-force-a-sqlconnection-to-physically-close-while-using-connection-pooling). – Livven