0

毎晩いくつかのテーブルをクリアして新しいアイテムを追加する関数にトランザクションスコープを追加しました。

次のエラーが発生する問題:

内部例外: トランザクション タイムアウト トランザクションは中止されました。

ジョブが完了するまでに約 12 分かかり、transactioncope を追加した後、関数を実行するたびにこのエラーが発生します。

私のコード:

        XalSqlDataContext db = new XalSqlDataContext();
        db.CommandTimeout = 3600;

        TransactionOptions options = new TransactionOptions();
        options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
        options.Timeout = new TimeSpan(0, 40, 0);

        using (TransactionScope txScope = new TransactionScope(TransactionScopeOption.Required, options))
        {
           //my code
        }

しかし、私はまだタイムアウトを取得します。

私のms sqlの問題の手がかり。

.net 2.0 のマシン構成でトランザクション タイムアウトを 1 時間に変更することができました。

私のコードは .net 3.5 で実行されていますが、.net 3.5 フォルダーの下に machine.config ファイルがありません。

4

1 に答える 1

1

TransactionManagerには最大タイムアウトがあります。machine.config を確認します。データ コンテキストのタイムアウトを最大値より高く設定しても無視され、machine.config 値が使用されるため、machine.config ファイルを調整する必要があると思います。

http://msdn.microsoft.com/en-us/library/system.transactions.transactionmanager.maximumtimeout.aspx

于 2013-02-16T07:30:10.527 に答える