web-dev-qa-db-ja.com

MSDTCとSQL Serverとの関係

そこで、MSDTCと、SQL Server内のさまざまな種類の呼び出しでMSDTCが果たす役割または果たしていないその役割について調査を行っています。その結果、次の質問について考えました。

  1. MSDTC(存在する場合)とその長所/短所のサードパーティの代替品/代替品はありますか?

  2. リンクサーバーを介して単一のテーブル(CRUDまたはSelect)をクエリするだけでDTCは機能しますか?

  3. トランザクションレプリケーションにMSDTCは必要ですか?更新可能なサブスクリプションにはMSDTCが必要ですが、更新不可能なサブスクリプションにMSDTCが必要/使用されているかどうかはわかりません。

グーグルで見ると、これらの質問に対する良い答えを見つけることができないようです。そこで、ここのコミュニティに目を向けてください。 MSDTCについての私の理解を深めるための助けがあれば、大歓迎です。

ありがとうございました!

4
Chinesinho

MSDTCは、アプリケーションにトランザクション管理サービスを提供します。通常のトランザクションマネージャまたはXA準拠のリソースマネージャとして機能できます。 SQL ServerはDTCを使用する有名なアプリですが、実際にはSQL Serverの機能やコンポーネントではありません。 MSDTCは、トランザクションの一貫性を確保するために、2つ以上の異なるリソースのトランザクション管理を提供することを実際に目的としています。トランザクション管理は、単一のリソース/データベース用にSQL Serverに組み込まれていますが、現時点では、複数のリソースをネイティブで処理しません。詳細については この古いMSDTCブログ を参照してください。コンテンツは本当に古いですが、コンセプトはまだ正確です。

あなたの質問については、

  1. 他にも多くのトランザクションマネージャがありますが、SQL ServerはデフォルトでDTCと統合されています(たとえば、BEGIN DISTRIBUTED TRANSACTIONでクエリを開始すると、トランザクションマネージャとしてDTCが自動的に登録されます)。 JDBCを使用する場合は、JDBCパッケージからXAコンポーネントをインストールして、XAをサポートするようにSQL Serverを構成することもできます。ドライバーとそれを行うためのいくつかのインストールスクリプトがあります(すべてパッケージ内)。これにより、一部のXPがXAトランザクションサポートを提供するように設定されます。他にもSQL Server用のTMがあるかもしれませんが、私はそれらに遭遇していません。
  2. はい、それはあなたがやっていることに依存します。 DQは、必要に応じて、トランザクションを管理するためにDTCを参加させることができます(DTに自動的に昇格します)。例えば。読み取り専用の操作はできませんが、書き込みはできます。
  3. 更新可能なサブスクリプションのないトランザクションレプリケーションでは、MSDTCは必要ありません。ログベースであり、プッシュまたはプルに関係なく、分散トランザクションの概念はありません。
4
SQLmojoe