多くのデータ処理を実行している Windows サービスがあります。ある時点で、サービスを閉じるときにサービスがクラッシュしましたSQLConnection
。Close 接続メソッドの呼び出しにコメントすると、Service はクラッシュすることなく一貫して動作しています。
何が問題なのですか? 以下はコードスニペットです
private void DeleteTempTable()
{
_logger.Info("DeleteTempTable");
try
{
foreach (KeyValuePair<string, string> item in _stables)
{
string dropSql = string.Empty;
dropSql = string.Format("DROP TABLE [{0}];", item.Value);
SqlConnection oConnDropTables = new SqlConnection(connectionString);
oConnDropTables.Open();
if (!string.IsNullOrEmpty(dropSql))
{
using (SqlCommand cmd = new SqlCommand(dropSql, oConnDropTables))
{
cmd.ExecuteNonQuery();
}
}
if (oConnDropTables != null && oConnDropTables.State == ConnectionState.Open)
oConnDropTables.Close();
oConnDropTables = null;
}
}
catch (Exception ex)
{
_logger.Error("Error " + ex.Message);
throw ex;
}
}
Close connection にコメントすると、サービスはクラッシュすることなく動作しています。また、catch ブロックにも引っかかりません。また、接続はなくNull
、接続状態は開いているだけです..
私が試したこと: 1) 接続に「using」コンストラクトを配置する - 役に立たなかった 2) SQLException をキャッチして、得られるものがあるかどうかを確認する