問題タブ [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.
sql-server - 複数のセッションでのNHibernateトランザクションの問題
MS Sql Server 2008 を使用して Windows サービスで実行するように NHibernate をセットアップしました。通常の TransactionScope を使用して、操作がアトミックであることを確認します。Hibernate は、アセンブリごとにセッション ファクトリを作成するように設定されています。
3 つの異なるアセンブリからオブジェクトに変更を書き込みたいと考えています。一度に 1 つまたは 2 つのアセンブリを操作するとすべて正常に動作しますが、3 つ目のアセンブリからの読み取りを追加すると問題が発生します。
つまり、2 つのアセンブリ内のオブジェクトの読み取り/書き込みは正常に機能しますが、アセンブリからオブジェクトを追加すると問題が発生します。ただし、他の 2 つのアセンブリのオブジェクトを操作せずに 3 番目のアセンブリから読み取ることも正常に機能します。セッションがお互いに問題を引き起こしているような気がします。
私のコードは次のようなものです:
(scope.Complete() を介して) トランザクション スコープを完了しようとすると、次のエラー メッセージが表示されます。
何かご意見は?
sql-server - MSDTCにSQLServer分散トランザクションを孤立させる
プロジェクトのWebSphereベースのJavaEEアプリケーションをシャットダウンすると、分散トランザクションがSQLServer2005データベースで存続することがあります。これらは永久にロックを保持し、手動で強制終了する必要があります。それらは、この非常に優れた記事で一般的に説明されています。
この記事では、トランザクションコーディネーターが分散トランザクション参加者を調整できないため、プロセスID-2でトランザクションにフラグを立てる方法について説明しています。
この問題が発生することはめったにありませんが、アプリケーションをシャットダウンすると常に発生することを考えると、MSDTCの障害であるとは確信していません。WebSphereと、WebSphereがアプリケーションを終了する方法と関係がある可能性が高くなります。
テストしたいのですが。しかし、私はそれを確実に実現することはできません。
MSDTCにSQLServer分散トランザクションを孤立させる方法はありますか?
.net - vbs スクリプトを使用して既存の COM+ アプリケーション ID を変更する
vbs スクリプトを使用して既存の COM+ アプリケーション ID を変更する方法。認証レベル = なしのように、vb スクリプトを介してこのユーザーに識別します。com+ アプリケーションの追加/削除に関する多くの投稿が見つかりましたが、既存のものは変更されていません。助けてください
sql-server - エラー処理のための SSIS ローカル ネスト トランザクション
SSIS でのトランザクション管理に MSDTC を使用しないことを計画しており、代わりに Begin transaction と commit transaction を使用してローカル トランザクションを使用したいと考えています。設計上は、1 つの問題を除いて問題ないようです。SSIS パッケージがいずれかのタスクで失敗した場合、エラー テーブルにレコードを挿入するエラー イベント ハンドラーがあります。そのため、SSIS がトランザクションをロールバックすると、エラー処理ルーチンもロールバックされます。しかし、パッケージ実行の開始時にトランザクションを開始すると、ネストされたトランザクションが機能しないため、これを細かく制御する方法がわかりません。
何かご意見は?
.net - MS DTC または TransactionScope の最大タイムアウト
分散トランザクションのタイムアウトについて質問があります。
たとえば、TransactionScope = 10 分 (最大、machine.config を編集しない場合) のタイムアウトがあります。また、MS DTC のタイムアウトは (ComponentServices-MyComputer プロパティで確認できるように) 60 秒です。
誰が知っていますか、どのタイムアウトが取られますか?
wcf - WCF net.tcp バインディングを介した分散トランザクションでのタイムアウトの問題
WCF の net.tcp バインディングを介して分散トランザクションを実行すると、奇妙なタイムアウトの問題が発生します。トランザクションは常に正確に 10 分後にタイムアウトします。私が知っているすべてのタイムアウトをそれよりも高い値 (15 分) に設定したと思いますが、おそらく何かを見落としています。IIS7.5 でホストされている WCF net.tcp サービスを呼び出しています。
サービス側では、次のバインディング構成があります。
ご覧のとおり、関連するすべてのタイムアウトは 15 分です。クライアント側のバインディング構成は次のとおりです。
繰り返しますが、私が認識しているすべてのタイムアウトは 15 分に設定されています。最後に、トランザクションを開始するコード:
Web サービス メソッド自体には、次の署名があります。
しかし、私が言ったように、トランザクションを開始してからちょうど 10 分後にタイムアウトします。タイムアウトするのはトランザクション自体かどうかはわかりません。トランザクションがタイムアウトするのは、タイムアウトする別のコンポーネントである可能性があります。
私は何が欠けていますか?知らない IIS 設定はありますか? MSDTC 設定?
nservicebus - NServiceBus: System.Transactions.TransactionException: パートナー トランザクション マネージャーがリモート/ネットワーク トランザクションのサポートを無効にしました
IHandleMessages 実装の Handle(T value) メソッド内からデータベースにレコードを保存しようとすると、サブスクライバーでこの例外が発生します。なぜそれが起こるのか誰か知っていますか?NServiceBus は分散トランザクションを使用してメッセージの処理をトランザクション化することを覚えていると思いますが、両方のマシンで「RunMeFirst.bat」ファイルを実行した後、なぜそれが「機能」しないのかわかりません。
何か案は?
ado.net - MSDTC で無効になっているネットワーク アクセス
System.Transactions.TransactionScope()
単体テストで使用 して、レコードを挿入し、読み取りを試み、トランザクション スコープをロールバックさせて、データベースに足跡を残さないようにしています。
行 5 で例外がスローされ、エラー メッセージが表示されます
System.Transactions.TransactionManagerCommunicationException : 分散トランザクション マネージャー (MSDTC) のネットワーク アクセスが無効になっています。コンポーネント サービス管理ツールを使用して、MSDTC のセキュリティ構成でネットワーク アクセスに対して DTC を有効にしてください。
コンポーネント サービス管理ツールを確認したところ、ワークステーションでDTC が有効になっています。また、このMSDTC トランザクション スコープの問題スレッドを発見しました。このスレッドから、ネットワーク DTC アクセスを有効にする方法に誘導されます。
しかし、SQLサーバーをチェックしたとき、リモートアクセスのチェックボックスはすでにチェックされていました. 他に何かアイデアはありますか?
詳細...リポジトリが同じ接続を保持するように強制し、2番目のSQLステートメントの別のプールに戻らないようにすると、機能します。どうやら、2番目のSQLステートメントに別の接続を使用すると、DTCがトランザクションを「分散モード」にエスカレートするようになります(両方のSQLステートメントが同じサーバー上にあり、まったく同じ接続文字列を使用するため、そうすべきではありません)。たとえそれがあったとしても、それ(分散モード)はとにかく動作するはずです。
.net-4.0 - アクティブなローカル トランザクションがないため、PROMOTE TRANSACTION 要求が失敗しました
上記のメッセージはどのような状況で表示されますか? TransactionScope への呼び出しにラップされている SQL Server への単一の呼び出しがあります。私たちの開発環境と QA 環境では、MSDTC がオフになっていて、呼び出しは正常に成功しています。ただし、MSDTC がオンになっている運用環境では、この呼び出しに失敗しています。分散トランザクション呼び出しをまったく見ていないと確信しているときに、これを引き起こす何かがありますか?
nhibernate - NHibernate IPreUpdateEventListener/IPreInsertEventListener にアクティブなトランザクションがないのはなぜですか?
NHibernate 3 を使用しています。アプリケーションは SQL Server 2008 に対して実行すると問題なく動作しますが、SQL 2000 では断続的にエラーが発生します (NH ダイアレクトを適切に変更しました)。エラーはすべて MDTC (分散トランザクション) コンポーネントに関連しています。通常、読み取りは正常に機能しますが、保存/更新中にコードが爆発しますが、常に同じエラーが発生するとは限りません。よく目にするのは、「分散トランザクションが完了しました。このセッションを新しいトランザクションまたは NULL トランザクションに登録してください。
この根本的な原因を調査しており、いくつかのログを追加しました。IPreUpdateEventListener および IPreInsertEventListener インターセプターが定義されているので、リポジトリだけでなくそこにもログインします。私が見つけたのは、リスナーに到達するまでに、現在のセッションにトランザクションがないことです。
ここに私のリポジトリコードがあります:
そして、これが私のイベントリスナーコードです:
そして、ここにログ出力があります:
これで何か問題があることがわかりますか?挿入前にアクティブなトランザクションがないのはなぜですか? Sql Server 2000 (MSDTC がオンになっている) に対して何か特別なことをする必要があることを知っている人はいますか?
2008 環境は Windows 7 を実行しているローカル マシンであり、Sql Server 2000 サーバーは Server 2003 であることに注意してください。