問題タブ [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 に答える
2730 参照

nhibernate - NServiceBus / NHibernate には MSDTC が必要ですか?

私は NServiceBus ソリューションを作成しており、DBSubcriptionStorage を使用しようとしています。これはデータ アクセスに NHibernate を使用し、次の例外が発生します。

パートナー トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました

MSDTC を有効にすることはできますが、私の質問は次のとおりです。この要件はどこから来ているのでしょうか。削除できますか?

私は NHibernate に詳しくなく、MSDTC が必要なのか、NServiceBus が必要なのかわかりません。NServiceBus サブスクリプション データベースにはフラット テーブルが 1 つしかなく、このシナリオでは MSDTC の使用はほとんど見られません。

MSDTC 要件を削除できますか? そのために、独自のサブスクリプション永続レイヤーを作成する必要がありますか?

ありがとう

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

transactions - WF4:永続性とDTC

WorkflowApplicationインスタンスを管理するワークフローホストを構築しています。

インスタンスはSqlWorkflowInstanceStoreを使用します。

SqlWorkflowInstanceStoreのテーブルとロジックは、永続性の参加者を使用して書き込んでいる他のテーブルとロジックと同じデータベースにあります。

AppFabricを使用していません。

私の質問は:DTCを実行する必要がありますか?

注:同じ構成のWF3 / 3.5では、DTCが必要でした(正確な理由はわかりませんが、サーバーとデータベースが1つしかないため、奇妙に思えます)。

0 投票する
4 に答える
749 参照

linq-to-sql - シンプルな取引

トランザクションに入れたい2つのlinq 2 SQLステートメントがあります(SQLサーバーはリモート、ファイアウォールの外側など)他のすべての通信は機能しますが、これら2つのステートメントをTransactionScope()でラップすると、MSDTCを構成する必要が生じ始めますやったのですが、ファイアウォールの問題があります (私が思うに) もっと簡単な方法はありますか?

私がやりたいことの基本はこれに要約されます:(両方ともフードの下に格納されたプロシージャです)

これを達成する最も簡単な方法は何ですか?

編集:
最初にこれを取得しました: トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました。(HRESULT からの例外: 0x8004D024) 私たちのサーバーでは、こちらの指示に従ってこれを修正しました。ただし、手順はWindows 7(私の開発ボックス)には適用されないようです。上記の回答に関する私のコメントを参照してください。

問題を修正した後(非win7ボックスで)、次のようになります:トランザクションはすでに暗黙的または明示的にコミットまたは中止されています(HRESULTからの例外:0x8004D00E)これは、一部のグーグルが示唆したファイアウォールの問題である可能性があります。

EDIT
リモートDBがSQL 2000であることを発見しました

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

.net - 読み取り専用EFコンテキストのTransactionScope参加を抑制しますか?

異なるデータベースを指す複数のデータコンテキストを開く必要があるシナリオがあります。ただし、私はデータベースの1つにのみ書き込み、他のデータベースから読み取りを行っています...したがって、技術的には、トランザクションはデータベースの1つに対してのみ行う必要があります。

TransactionScopeを分散トランザクションにアップグレードすることを避けたいので、MSDTCについて心配する必要はありません...トランザクションに1つのコンテキストのみを参加させる方法はありますか?

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

wcf - トランザクションをサポートする WCF カスタム メッセージの書き込み

System.Servicemodel.Channels.Message を継承するカスタム メッセージを使用しています。
私のカスタム メッセージは、データベースから取得した IEnumerable コレクションを取得します。
WCF サービスはトランザクション対応です (既にテスト済み)。

MS-DTC が有効です。

問題は、保護されたオーバーライド void OnWriteBodyContents(XmlDictionaryWriter writer)メソッドがカスタム メッセージで実行されるときに、トランザクションがないことです。
System.Transactions.Transaction.Current が null です。サービスの実行中、トランザクション フローは正常に動作しますが、メッセージが WCF メカニズムによって書き込まれると、DB コマンド (データをプルする) がトランザクションなしで実行されるトランザクションから外れているように見えます。
IEnumerable の代わりに単純な配列を渡す場合、DB アクションはトランザクションの下で実行されますが、応答の書き込みと並行して実行する必要があることに注意してください。

トランザクションが欠落している理由と、それをアクティブにするために何ができるかについて、アイデアをお願いします。

どうもありがとう!
タミール。

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

timeout - SqlConnection と TransactionScope のタイムアウト

タイムアウトが 60 分の TransactionScope (DTC 経由、読み取りコミット) があります。TransactionScope で接続を開きました (トランザクションに参加したいと思っています) が、30 秒後にタイムアウトが発生します。

machine.config で、system.transaction maxTimeout を 60 分に変更しました。

タイムアウトが 30 秒後に発生するのはなぜですか?

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

entity-framework - エンティティ フレームワーク 4 でのトランザクションの問題

エンティティ フレームワーク 4 でトランザクションを実装しようとしています。私が読んだことから、以下のコードは正しいです。SaveChanges は正常に動作しますが、最初の ExecuteFunction 呼び出しを実行するとすぐに、次の例外が発生します。

基になるプロバイダーが Open で失敗しました。---> System.Transactions.TransactionManagerCommunicationException: 分散トランザクション マネージャー (MSDTC) のネットワーク アクセスが無効になっています。コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスに対して DTC を有効にしてください。

データベース サーバーにログオンしましたが、分散トランザクション マネージャーというサービスは表示されませんが、分散トランザクション コーディネーターは表示され、開始されています。これを機能させるために何を変更する必要があるのか​​ わかりません。誰でも知っていますか?ありがとう。

これがコードです。

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

c# - DTC の問題をデバッグするには?

「トランザクションはすでに暗黙的または明示的にコミットまたは中止されています。」というメッセージが時々スローされるコードの単体テストがあります。例外。Google はすばらしいヒットをたくさん出してくれますが、私が読んだものはどれも当てはまらないようです。

単体テストをローカルで実行すると、例外がスローされることはありません。
ビルド サーバーで手動で実行すると、例外がスローされることはありません。

実際、例外がスローされるように見えるのは、自動化されたビルドおよびテスト プロセス中の夜間のみであり、約 80% の時間で例外がスローされます。

問題は通常、トランザクションまたはファイアウォールのデータベース接続の問題によって引き起こされるため、これにより、この件に関するほとんどすべての Google の結果が除外されます。

イベント ログ (テストを実行しているビルド マシンまたは開発データベース サーバー) のいずれにも、問題があることを示唆するイベントはありません。実際、関連する唯一のイベント メッセージはデータベース マシン上にあり、「MSDTC: セッション アイドル タイムアウト オーバー、セッションを破棄しています」というメッセージが表示されます。テストを実行した直後にイベントが発生します。

この問題を見つけようとする方法がわかりません。

トランザクション状態のコード内から詳細を生成する方法はありますか (私は .NET 3.5 で C# を使用しています)?

これを追跡するのに役立つ詳細情報をイベント ログから取得する方法はありますか?

関連するマシンは Windows 2000 Server (db) と Windows Serer 2003 (build) で、適切なツールを見つけるのに役立ちます。

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

nservicebus - NServiceBus - AsA_Server 構成が必要ですが、MSDTC トランザクションには参加しません

サービスの起動時に入力キューからメッセージを消去したくないサービスがあり、MSDTC トランザクションに参加させたくありません。AsA_Server を実行するようにエンドポイントを構成していますが、MSDTC トランザクションの開始を無効にする方法がわかりません。NServiceBus.Host.exe を使用しています。

誰もこれを以前にやったことがありますか?

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

msmq - クラスター化された MSMQ インスタンスにバインドされた MSMQ メッセージが発信キューでスタックする

一連の NServiceBus サービス用に MSMQ をクラスター化しましたが、クラスター化されなくなるまですべてが正常に動作します。1 つのサーバーの発信キューがいっぱいになり始め、すぐにシステム全体がハングします。

詳細:

サーバー N1 と N2 の間にクラスター化された MSMQ があります。他のクラスター化されたリソースは、クラスター化されたキューでローカルとして直接動作するサービスのみです。つまり、NServiceBus ディストリビューターです。

すべてのワーカー プロセスは、Services3 と Services4 という個別のサーバー上にあります。

NServiceBus に慣れていない方のために説明すると、作業はディストリビューターによって管理されるクラスター化された作業キューに入ります。Service3 と Services4 のワーカー アプリは、同じディストリビューターが管理するクラスター化されたコントロール キューに「I'm Ready for Work」メッセージを送信し、ディストリビューターはワーカー プロセスの入力キューに作業単位を送信して応答します。

ある時点で、このプロセスが完全に停止する可能性があります。システムがハングしたときのクラスター化された MSMQ インスタンスの発信キューの図を次に示します。

ハング状態のクラスター化された MSMQ 送信キュー

クラスターを別のノードにフェイルオーバーすると、システム全体が混乱するようなものです。フェールオーバー直後の同じクラスター化された MSMQ インスタンスの図を次に示します。

フェールオーバー後のクラスター化された MSMQ 送信キュー

システムをスムーズに実行し続けるために、この動作と、それを回避するためにできることを誰か説明できますか?