アプリケーションで次のエラーが発生しました。
このSQLTransactionは完了しました。使用できなくなりました
スタックトレースは以下に添付されています–それはとについて述べていZombie Check
ますRollback
。
コードの間違いは何ですか?
注:このエラーは1回だけ発生しました。
アップデート
MSDNから-SqlTransaction.Rollbackメソッド
接続が終了した場合、またはトランザクションがサーバー上ですでにロールバックされている場合、ロールバックはInvalidOperationExceptionを生成します。
トランザクションのゾンビチェックから-エラー
このエラーがさまざまなアプリケーションで表示されるのを私が見た最も頻繁な理由の1つは、アプリケーション間でSqlConnectionを共有することです。
コード
public int SaveUserLogOnInfo(int empID)
{
int? sessionID = null;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlTransaction transaction = null;
try
{
transaction = connection.BeginTransaction();
sessionID = GetSessionIDForAssociate(connection, empID, transaction);
//Other Code
//Commit
transaction.Commit();
}
catch
{
//Rollback
if (transaction != null)
{
transaction.Rollback();
transaction.Dispose();
transaction = null;
}
//Throw exception
throw;
}
finally
{
if (transaction != null)
{
transaction.Dispose();
}
}
}
return Convert.ToInt32(sessionID,CultureInfo.InvariantCulture);
}
スタックトレース
参照:
- ゾンビトランザクションとは何ですか?
- トランザクションのゾンビチェック-エラー
- SqlTransactionが完了しました
- http://forums.asp.net/t/1579684.aspx/1
- 「このSqlTransactionは完了しました。使用できなくなりました。」...構成エラー?
- dotnet.sys-con.com-SqlClient接続プールが公開されました
- スレッドアボートはゾンビトランザクションと壊れたSqlConnectionを残します