問題タブ [msdtc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1569 参照

transactions - デバッグ時にトランザクションが DTC トランザクションかどうかを判断する

.Net では、デバッグ時にアンビエント トランザクションが DTC トランザクションかどうかを判断する方法はありますか。SqlConnection クラスのメンバーを調査しましたが、何も見つかりませんでした。ありがとう。

0 投票する
2 に答える
57470 参照

sql-server - 分散トランザクションマネージャー(MSDTC)が無効になっているエラーを修正する方法

ASP.NETのトランザクションスコープ機能を使用して分散トランザクションを管理しているため、次のリンクを介して分散トランザクションを有効にする必要があります
。パートナートランザクションマネージャーがリモート/ネットワークトランザクションのサポートを無効にしました

これはSQLServer2005およびWindowsServer2003で正常に機能しますが、WindowsServer2008サーバーおよびSQLServer2005に関しては、次のエラーが発生します。それでも、上記のリンクで提供されているのと同じ手順に従います。

Windows Server 2008 + SQL Server 2005 +分散トランザクションマネージャー(MSDTC)のネットワークアクセスが無効になっています。コンポーネントサービス管理ツールを使用して、MSDTCのセキュリティ構成でネットワークアクセスに対してDTCを有効にしてください。

0 投票する
1 に答える
879 参照

sql-server - データベースの1つが読み取り専用の場合、分散トランザクションのエスカレーションは発生しますか?

ソースデータベースから宛先データベースへのインポートプロセスを実行しています。これらのインポートを自動化された方法で頻繁に実行する必要があります。

ソースは宛先とは別のサーバーにあります。どちらもMSSQL2008です。Linq2SQLを使用してソースにアクセスし、カスタムデータレイヤーを使用して宛先にアクセスします。ソースDBを変更することはありません(ただし、現時点では読み取り専用として復元していません)。ただし、現在、transactionScope内でインポートを実行すると、別々のサーバー上の2つのDBにアクセスするため、トランザクション全体がDTCにプロモートされます。

ソースDBを読み取り専用にした場合でも、これは実行されますか?

このシナリオでDTCプロモーションを回避する方法に関する他の提案はありますか?

Remusの回答に対するフォローアップの質問(ありがとう):

フォローアップ#1:私のインポートルーチンは、ソースからレコードをインポートし、宛先に新しいレコードを作成するように構成されています。このような:

TransactionScopeのLinq2SqlビットをRequiresNewで囲むと言っていますか?または、私はソースでのトランザクションを本当に気にしないので、トランザクションにその接続が含まれるようにSuppressを使用してTransactionScopeで囲むことができますよね?

フォローアップ#2:

「同じデータベースに対しても、2番目の接続を開く」と言うと、これに関するいくつかのバリエーションを読みました。

  1. "second connection" ==まったく同じ接続文字列であっても、Connectionオブジェクトの2番目のインスタンス
  2. "2番目の接続"==別のResourceManagerへの接続およびSQL2005で、これ以前は上記の1と同じ意味ですが、SQL2008では、これは別のインスタンスを意味します(つまり、同じインスタンス上の2つのDBは昇格されません)
0 投票する
0 に答える
1009 参照

authentication - MSDTC で相互認証を構成する方法は?

一般的な認証 (特別なケースとしての相互認証) は MSDTC でどのように機能し、MSDTC で相互認証を構成する方法は??

カスタム アプリケーション (アーカイブ ソリューション)、構成された時間にオンライン データベースからデータをフェッチし、バックエンド アーカイブ データベースにダンプする Windows サービスがあります (理想的には、オンライン DB とバックエンド DB は別のマシンにあります)。

私は TransactionScope を使用しており、クライアントとホスト マシンで認証なしで DTC を構成しましたが、正常に動作しています。ただし、クライアントは、認証モードを使用せず、MSDTC に何らかの認証を行うことを要求しています。相互認証を使用することにしましたが、それがどのように機能し、どのように構成するのかよくわかりません?? どんな助けでも大歓迎です。

0 投票する
0 に答える
274 参照

entity-framework - MSDTC 構成の自動化

.NET 3.5 を介してほとんどの新しいテクノロジを使用して大規模なビジネス アプリケーションを開発しており、System.Transaction と MSTC を自動的に使用するトランザクション管理に加えて、EF をアーキテクチャで DataAccessLayer として使用しています。各顧客の組織の 300 人を超えるエンド ユーザーに ClickOnce メソッドでこのアプリケーションを展開する必要がありますが、このタスクを自分で実行したり、System.Transaction をサポートするために MSDTC 設定を構成するようにエンド ユーザーをトレーニングしたりすることはできませんでした。実際には不可能です。最小で 200 ~ 300 人のユーザーから 500 または 600 までのユーザーの場合、これらのクライアントの MSDTC エンジンを自動的に構成し、ClickOnce 展開、セットアップ パッケージなどで自動化することによってこのソリューションを提供するソリューションが必要です。何か方法はありますか?,

どんな助けや解決策も感謝します。

0 投票する
1 に答える
8688 参照

sql - スレッド環境では、分散トランザクションは同じDBへの複数の接続でどのように動作しますか?

分散トランザクションでの複数のデータベース接続の動作を判断しようとしています。

一連のスレッドを生成する長時間実行プロセスがあり、各スレッドはそのDB接続などの管理を担当します。これらはすべてトランザクションスコープ内で実行され、各スレッドはオブジェクトを介してトランザクションに参加しDependentTransactionます。

このプロセスを並行して実行しようとすると、いくつかの問題が発生しました。つまり、トランザクションでクエリを同時に実行できないようなブロックがあるようです。

私が知りたいのは、トランザクションコーディネーターが同じDBへの複数の接続からのクエリをどのように処理するか、そしてスレッド間で接続オブジェクトを渡すことが推奨されるかどうかです。

MS SQLではトランザクションごとに1つの接続しか許可されていないことを読みましたが、同じトランザクションで同じDBへの複数の接続を作成して初期化できることは明らかです。接続を開くときに「別のセッションで使用されているトランザクションコンテキスト」例外が発生しない限り、スレッドを並列に実行することはできません。その結果、接続は同時に実行されるのではなく実行を待機する必要があり、最終的にコードは完了まで実行されますが、このロックの問題のためにアプリをスレッド化することによる純利益はありません。

コードは次のようになります。

編集

私のテストは、これができないことを決定的に示しました。複数の接続がある場合、または同じ接続が使用されている場合でも、トランザクション内のすべての要求または質問は順番に処理されます。

おそらく、彼らは将来この振る舞いを変えるでしょう。

0 投票する
3 に答える
13779 参照

entity-framework - MSDTC を使用せずに TransactionScope 内で 2 つの Entity Framework コンテキストを実行する方法は?

この問題は、ここの簡単な例では簡単に再現できませんが、誰かが経験やヒントを持っているかどうか疑問に思っていました.ここに問題があります:

  • エンティティ フレームワークの使用
  • アプリケーションには、(1) データが顧客などのエンティティテーブルに書き込まれる、(2) データが履歴テーブルに書き込まれる、多くのポイントがあります。
  • これらのアクションはどちらもEntity Framework を使用しますが、異なるコンテキストを使用します
  • これらのアクションは両方とも1 つのトランザクションで行う必要があります。つまり、一方が書き込みに失敗した場合、もう一方は書き込みを行うべきではありません。
  • それらをTransactionScopeでラップできます。

このような:

しかし、これは私に与えます:

Microsoft 分散トランザクション コーディネーター (MSDTC) は、ネットワーク トランザクションに対して無効になっています。

データベース管理者から、MSDTCは選択により無効化されており、インストールできないとのことでした。

したがって、各コンテキストが同じ EntityConnection を使用するという考えで、 MetadataWorkspace を使用して独自の EntityConnection を作成しようとして変更を加えています。ただし、これを機能させることはほぼ不可能であることが証明されています。たとえば、理論的には両方のコンテキストが EntityConnection を使用しているにもかかわらず、現在、上記のエラーが発生し続けています。たとえば、Entity Framework が MSDTC を必要とする場所/理由を理解するのは困難です。

共有する経験やコード例を持っている人はいますか?

0 投票する
0 に答える
595 参照

c# - TransactionScope が機能する場所と機能しない場所がある

Windows Server 2003 で ASP.NET 3.5、Linq to SQL、SQL Server 2005 を使用しています。XP SP3 で VS 2008 をローカルで実行しています。

トランザクションで挿入、更新、および削除をラップできる必要があります。コード ブロックを でラップしてこれを最初に試したときusing(var trans = new TransactionScope()) { ...; trans.Complete(); }、リモート トランザクションのネットワーク アクセスを有効にする必要があることを示す適切な例外が発生しました。 そうすることで、物事は期待どおりに機能し始めました。

今日に早送りします。私たちのアプリには、TransactionScope 処理も受けた、ほとんど使用されていない部分があります。トランザクションはコードベースの他のすべての部分で適切に機能しますが、今日、めったに使用されないこの部分が以前と同じ「ネットワーク アクセス」例外をスローしていることを発見しました。

分散トランザクション マネージャー (MSDTC) のネットワーク アクセスが無効になっています。コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスに対して DTC を有効にしてください。http://img101.imageshack.us/img101/5480/msdtcnetworkaccesserror.jpg

例外を引き起こすコードは次のとおりです。

何か提案があれば、よろしくお願いします。もっと説明できることがあれば教えてください。前もって感謝します!!

0 投票する
1 に答える
2937 参照

.net - 分散トランザクションを促進するMSDTCの信頼できるテスト?

MSDTCがトランザクションを分散トランザクションにプロモートしたことを確実に確認するにはどうすればよいですか?

これは、.netでTransactionScopeを使用する場合です。

現在、同僚は自分のマシンのコーディネーターをシャットダウンすることでこれをテストしています。例外がスローされた場合、これはトランザクションを促進する試みが発生した証拠と見なされます。これは有効なテストですか?

0 投票する
1 に答える
1123 参照

vb.net - LINQ-SQLServerとTransactionScopeでハングアップ

プログラムがフルーツデータベースにアクセスしようとすると、ハングが発生します。開発用コンピューターとSQLServerサーバーの両方でネットワークアクセスMSDTCを既に有効にしています。

コード:(コードの色付けはご容赦ください...SOが私のVB.NETを誤って解釈しています)

編集:

もう少し掘り下げてみましたが、問題はLINQのラインにあることがわかりました。LINQ to SQL Visualizerで表示しようとすると、次のエラーが発生します。

また、LINQステートメントを編集して実際のコードに近づけました。

最終編集:「thingiesas New ThingiesDataContext」の代わりに通常のSqlConnectionを使用しようとしましたが、それでも問題は発生します。

TransactionScopeは、同じトランザクション内で複数のSQL接続を処理できないようです。

公式MicrosoftNote

並列トランザクションはSQLServerではサポートされていません。

MSDNから:http://msdn.microsoft.com/en-us/library/bb896149.aspx