問題タブ [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 - SQL ServerでMSDTCを有効にするにはどうすればよいですか?
これも有効な質問ですか?MSTDCを使用している.NETWindowsアプリがあり、例外がスローされています。
System.Transactions.TransactionManagerCommunicationException:分散トランザクションマネージャー(MSDTC)のネットワークアクセスが無効になっています。コンポーネントサービス管理ツールを使用して、MSDTCのセキュリティ構成でネットワークアクセスのDTCを有効にしてください---> System.Runtime.InteropServices.COMException(0x8004D024):トランザクションマネージャーがリモート/ネットワークトランザクションのサポートを無効にしました。(HRESULTからの例外:0x8004D024)System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize、Byte [] propgationToken、IntPtr managedIdentifier、Guid&transactionIdentifier、OletxTransactionIsolationLevel&isolationLevel、ITransactionShim&transactionShim)。
Kbalertzガイドに従って、アプリがインストールされているPCでMSDTCを有効にしましたが、それでもエラーが発生します。
これはデータベースの問題なのだろうか?もしそうなら、どうすればそれを解決できますか?
sql - 挿入クエリが分散トランザクションに登録されないようにするにはどうすればよいですか?
リンク サーバーテーブルに行を挿入するために、ストアド プロシージャ内に SQL 挿入クエリがあります。
ストアド プロシージャは親トランザクション内で呼び出されるため、この Insert ステートメントは DTC を使用してリンク サーバーに行を挿入しようとします。
DTCの関与は避けたい。
Insert SQLステートメントがトランザクションスコープを無視するために(ヒントのように)それを行う方法はありますか?
sql - SQL Server、リモート ストアド プロシージャ、および DTC トランザクション
私たちの組織では、メインフレームの Adabas データベースに重要なデータが多数あります。このデータへの ODBC アクセスがあり、C# から ODBC/Natural の「ストアド プロシージャ」を使用して正常にクエリ/更新を行いました。
ここで実行できるようにしたいのは、SQL Server 2005 のストアド プロシージャ内からメインフレーム テーブルにクエリを実行し、結果をテーブル変数にダンプしてメッセージを送信し、その結果をネイティブ SQL データと結果セットとして結合することです。
SQL からの Natural プロシージャの実行は、選択しただけの場合は正常に機能します。ただし、結果をテーブル変数に挿入すると、SQL が分散トランザクションを開始しているように見え、それが接続に大混乱をもたらしているようです。
更新を行っていない場合、この DTC エスカレーション動作を無効にすることはできますか?
DTC を適切にセットアップして DataDirect の (以前の Neon Systems) Shadow ODBC ドライバーと通信するためのヒントはありますか?
windows - DTCPingとDTCTesterの違いは何ですか?
以前、MSDTCの問題を診断するためにDTCTesterを使用しました。しかし、DTCPingがほぼ同じことをしているように見えることに気づきました。これら2つの違いは何ですか?
これまでのところ、DTCPingはクライアントマシンとサーバーマシンの両方で実行する必要がありますが、DTCTesterはクライアントからのみ実行する必要があります。他に違いはありますか?
sql-server-2000 - Nunit でデータベース デッドロック テストを作成できますか?
このasp.netでは、デッドロックが発生する可能性があります。コードがそれらを適切に処理することを確認したいので、デッドロックをトリガーする NUnit テストを作成しようとしています.....
DAO はエンティティごとに分割されます。各エンティティには一連のテストがあり、これらは Startup() および Teardown() メソッドで囲まれています。これらのメソッドは、トランザクション スコープを作成し、テストが完了した後にロールバックします。これは他のすべての場合にうまく機能しますが、デッドロックにはまったく役に立ちません。
TransactionScope と SQL2000 (つまり、MSDTC が関係している) を使用して、確実に再現できる "デッドロック" テストをセットアップして実行するにはどうすればよいですか? 詳細: 2 人のユーザーが異なる特定のデータ値を使用して 2 つの関数を呼び出すと、デッドロックが発生する状況があることはわかっています。NUNIT内でこれをシミュレートするにはどうすればよいですか?そしてデッドロックを常に発生させますか?
はい、私は「そもそもデッドロックが発生するのを止めてみませんか」という行動計画から始めましたが、デッドロックが発生する可能性のあるコードを制御することはできません。関数を呼び出すだけで、デッドロックが発生する可能性があります。 .
c# - アボートが呼び出された後、MSDTC および Oracle トランザクションがロックされますか?
MSDTC と Oracle を使用して問題が発生しています。これは .net アプリケーションであり、TransactionScope クラスを使用してトランザクションを制御しています。
問題は、トランザクションがロールバックされた場合 (scope.Complete を呼び出さずに scope.Dispose が呼び出された場合)、ロックされたレコードを解放せずに長時間「中止」状態のままになることがあります。トランザクションが "Aborting" 状態のままであっても、トランザクションを中止するために Dispose が呼び出されると、すぐに戻るため、スレッドがスタックすることはありません。
トランザクションがこのように動作し、中止が呼び出された後にロックを保持する原因を知っている人はいますか?
ありがとう
.net - SqlConnection が System.Transactions の tx に登録されているかどうかを判断する方法は?
System.Transactions からのトランザクションを使用する場合 (インスタンスの TransationScope を作成する)、デフォルトですべての Sql 接続 (System.Data.SqlClient.SqlConnection) (ただし、Oracle.DataAccess.OracleConnection には当てはまりません) を開くときに登録されます。 . いわゆる自動入隊です。素敵な機能。ただし、接続文字列のパラメーター (enlist=false) を使用してオフにすることができます。その場合、開かれている接続は登録されません。ただし、後で手動で登録できます。したがって、私の質問は次のとおりです。特定の SqlConnection のインスタンスについて、その接続が (System.Transaction に) 登録されているかどうかを判断するにはどうすればよいですか。パラメータの接続文字列を見ることができます。しかし、私が言ったように、接続は手動で参加できるため、これはうまくいきません。
sql-server - 2 つの MS SQL Server 2005 間の分散トランザクション
2 つの MS SQL Server 2005 間で DISTRIBUTED TRANSACTION を実行する必要があります。NO ACTIVE TRANSACTION IS PRESENT またはこのようなエラーが表示されます。DTCTESTER プログラムは、トランザクションを実行できなかったというエラーをドロップします。ところで、ファイアウォールで 135 ポートが開いています。
たぶん、誰かが問題を知っているか、提案がありますか?
linq-to-sql - Sql Server 2000 に対する TransactionScope エラー - パートナー トランザクション マネージャーがリモート/ネットワーク トランザクションのサポートを無効にしました
Sql 2000 データベースに対する Linq-to-Sql アクションの単純なトランザクションを設定しようとしています。TransactionScope を使用すると、次のようになります。
ただし、次のエラーが発生し続けます。
パートナー トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました。(HRESULT からの例外: 0x8004D025)
しかし、従来のトランザクションを使用してトランザクションをセットアップすると、問題なく動作します。したがって、これは正常に機能します:
TransactionScope が、私の 2 番目の実装とは裏で何か違うことをしているのだろうかと思っています。そうでない場合、TransactionScope を使用しないと何が失われますか? また、エラーの原因に関するガイダンスも役立ちます。MSDTC が SQL サーバーとクライアント マシンの両方で実行されていることを確認しました。
.net - System.Transaction暗黙のトランザクションが他の接続を台無しにする
System.Transaction.TransactionScopeを使用して、いくつかのストアドプロシージャを呼び出すトランザクションを作成しようとしていますが、それ自体がクリーンアップされていないようです。トランザクションが終了すると(コミットされているかどうかに関係なく、トランザクションスコープオブジェクトが破棄されると)、データベースへの後続の接続は、通常のように読み取りコミットではなく、シリアル化可能な読み取りコミットレベルで開きます。
呼び出しごとに接続を開いたり閉じたりします(.NETの通常のように接続のプールを閉じて戻る)、トランザクションでの使用が終了したときに接続を明示的にリセットする方法がありませんか?System.Transaction.TransactionScopeの背後にある考え方は、すべての複雑さを隠すことだと思いました。
したがって、私が持っているコードは次のようになります。
これが通常の方法だと思います。しかし、sqlserverプロファイラーを見ると、接続が開かれていることがわかります。
これは、後続の非トランザクション関連のデータベースアクティビティを台無しにしており、明らかにそれほど高速ではありません。ReadCommitedを使用してトランザクションを明示的に実行するようにトランザクションオプションを設定することでこれを回避できますが、これは私の意見ではこの操作の理想的な動作ではありません。
また、Commitabletransactionオブジェクトを明示的に作成し、アンビエントトランザクションを使用する代わりに、明示的な新しいトランザクションを作成しようとしましたが、それでも運がありません。
これを修正する方法についてのアイデアは、シリアル化可能な接続を使用する呼び出しがreadpastロックヒントを使用しようとするとエラーをスローするため、非常に高く評価されます。