そこで、MSDTCと、SQL Server内のさまざまな種類の呼び出しでMSDTCが果たす役割または果たしていないその役割について調査を行っています。その結果、次の質問について考えました。
MSDTC(存在する場合)とその長所/短所のサードパーティの代替品/代替品はありますか?
リンクサーバーを介して単一のテーブル(CRUDまたはSelect)をクエリするだけでDTCは機能しますか?
トランザクションレプリケーションにMSDTCは必要ですか?更新可能なサブスクリプションにはMSDTCが必要ですが、更新不可能なサブスクリプションにMSDTCが必要/使用されているかどうかはわかりません。
グーグルで見ると、これらの質問に対する良い答えを見つけることができないようです。そこで、ここのコミュニティに目を向けてください。 MSDTCについての私の理解を深めるための助けがあれば、大歓迎です。
ありがとうございました!
MSDTCは、アプリケーションにトランザクション管理サービスを提供します。通常のトランザクションマネージャまたはXA準拠のリソースマネージャとして機能できます。 SQL ServerはDTCを使用する有名なアプリですが、実際にはSQL Serverの機能やコンポーネントではありません。 MSDTCは、トランザクションの一貫性を確保するために、2つ以上の異なるリソースのトランザクション管理を提供することを実際に目的としています。トランザクション管理は、単一のリソース/データベース用にSQL Serverに組み込まれていますが、現時点では、複数のリソースをネイティブで処理しません。詳細については この古いMSDTCブログ を参照してください。コンテンツは本当に古いですが、コンセプトはまだ正確です。
あなたの質問については、
BEGIN DISTRIBUTED TRANSACTION
でクエリを開始すると、トランザクションマネージャとしてDTCが自動的に登録されます)。 JDBCを使用する場合は、JDBCパッケージからXAコンポーネントをインストールして、XAをサポートするようにSQL Serverを構成することもできます。ドライバーとそれを行うためのいくつかのインストールスクリプトがあります(すべてパッケージ内)。これにより、一部のXPがXAトランザクションサポートを提供するように設定されます。他にもSQL Server用のTMがあるかもしれませんが、私はそれらに遭遇していません。