5

TransactionScope が最初に登場したとき、開発マシン (XP) とデータベース サーバー (Windows Server 2003) の間で動作させる際に深刻な問題に遭遇しました。

もっと調べてみると、これはトリッキーで広範囲に及ぶ問題であり、本番環境で頭痛の種になる可能性があるように見えたので、この方法でトランザクションを処理しないことに決めました (構文がとても好きで、本当に望んでいたにもかかわらず)働きます)。

これらの問題はまだありますか、それとも安全に使用できますか? これを問題なく定期的に使用していますか?

どうもありがとう!

注:かなり時間が経ちましたが、問題は Distribute Transaction Coordinator に関係していたと思います。私は長い間それをいじっていましたが、それを機能させることができませんでした。

4

3 に答える 3

8

Rick Strahl は、トランザクション スコープと LINQ to SQL に関する素晴らしい投稿をここで行っています。そのコンテキストはよりLINQ to SQLですが、質問を解決するのに役立ついくつかの原則が適用されると思います.

編集:より具体的にあなたの質問に答えるために、StrahlがTransactionScopeについて言わなければならないことは次のとおりです:

従来、TransactionScope は分散トランザクション コーディネーター (DTC) の .NET ラッパーでしたが、その機能は多少拡張されています。懸念事項の 1 つは、DTC はリソース使用量の点でかなり高価であり、DTC サービスが実際にマシン上で実行されている必要があることです (さらに別のサービスは、クライアント インストールで特に厄介です)。

ただし、TransactionScope と SQL Server クライアント ドライバーに対する最近の更新により、単一のデータベースに対して単一の一貫した接続文字列を使用して実行している限り、DTC を必要とせずに TransactionScope クラスとその使いやすさを使用できるようになりました。

于 2009-07-20T21:06:45.600 に答える
1

TransactionScopeに関してはまだ問題があります。私の現在のプロジェクトでは、不規則な間隔で「分散トランザクションに参加できません」という例外とTransactionInDoubtExceptionの両方が発生しています。TransactionScopeに関連する両方の例外。両方の例外の回避策の1つは、単一のOracle接続を使用することです(もちろん該当する場合)。これについては、「分散トランザクションへの不要なエスカレーションを回避する」でお読みください。

パフォーマンスへの影響については、私の投稿を読んでください:TransactionScopeを使用したパフォーマンスへの影響

于 2012-02-04T18:58:34.803 に答える
1

問題なく、TransactionScope を 1 年以上使用しています。ただし、アプリケーションは非常に少数のユーザーを持つ内部アプリケーションです。また、データベースとアプリケーションは同じサーバー上にあります。

以下に、TransactionScope に関するいくつかの情報と、詳細情報の参照先を示します 。 TransactionScope オブジェクトを作成するたびに、軽量のトランザクションが開始されます。次に、軽量のトランザクションをサポートする単一の接続/リソースを使用する限り、トランザクションはリソース マネージャーによって処理され、リソースをできるだけ消費せず、非常に優れたパフォーマンスが得られます。2 つ目の接続/リソースをトランザクション スコープに追加すると、トランザクション マネージャーは自動的に OleTx トランザクション マネージャーに昇格し、COM+ DTC テクノロジを使用して分散トランザクションを処理できます。これは、SQL Server 7/2000、Oracle、およびその他の RDBMS などの軽量トランザクションをサポートしないリソース マネージャーへの単一接続でも発生します。

次の 2 つのリソースを参考にしてください。

「Microsoft Windows Server 2003 Service Pack 1 (SP1) および Microsoft Windows XP Service Pack 2 (SP2) には、セキュリティ関連の更新と変更が多数含まれています。これらの変更の一部は、Microsoft 分散トランザクション コーディネーター (MSDTC) サービスに影響します。」 Windows Server 2003 Service Pack 1 および Windows XP Service Pack 2 の分散トランザクション コーディネーター サービスの新機能

System.Transactions に関する Juval Lowy のホワイトペーパー: Microsoft .NET Framework バージョン 2.0 での System.Transactions の紹介

于 2009-07-21T15:18:00.713 に答える