17

データベーステーブルへの単一行のコミットを実行する次のコードがあります(SQL 2008 / .NET 4)

using (var db = new MyDbDataContext(_dbConnectionString))
{
    Action action = new Action();
    db.Actions.InsertOnSubmit(dbAction);
    db.SubmitChanges();
}

通常はすべて問題ありませんが、たまに次の例外が発生します。

System.InvalidOperationException: This SqlTransaction has completed; it is no longer usable.
at System.Data.SqlClient.SqlTransaction.ZombieCheck()
at System.Data.SqlClient.SqlTransaction.Rollback()
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)

SOには同様の質問がたくさんありますが、それらを読んだ後、原因を突き止めることができません。

これは単に SQL タイムアウトが原因でしょうか (呼び出しが行われてから 25 秒近く後に例外が発生します)? または、その場合、SQL タイムアウト例外を予期する必要がありますか?

他に何が原因なのか誰か知っていますか?

4

3 に答える 3