データベースのインストールとアンインストールの機能が正常に動作することをテストするための単体テストがあります。 単体テストでは、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()を呼び出したときにユーザーがログアウトしない理由を知っていますか?
これは接続プーリングと関係がありますか?
ありがとう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