SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Server 2016 の AlwaysOn の DTC サポートについて

leave a comment

SQL Server 2016 では、AlwaysOn で DTC (分散トランザクション) がサポートされるとアナウンスされています。
これに関連する情報を軽くまとめてみたいと思います。
2016/4/15 追記
最新の情報を確認したところ、Windows Server 2012 R2 に KB?3090973 をインストールすることで、DTC がサポートされるらしいです。

Availability Groups must be running on Windows Server 2016 or Windows Server 2012 R2. For Windows Server 2012 R2, you must install the update in KB3090973 available at https://support.microsoft.com/en-us/kb/3090973.

 

SQL Server 2014 までの制限については、データベース ミラーリングまたは AlwaysOn 可用性グループではサポートされない複数データベースにまたがるトランザクション (SQL Server) に記載されています。
# データベース ミラーリングおよび複数データベースにまたがるトランザクション を見たほうが日本語はわかりやすいかもしれません。
ここに、複数のデータベースにまたがるトランザクションとDTC についての利用制限が記載されています。
ほかにも
Not-Supported: AGs With DTC/Cross-Database Transactions / [SQL Server] 高可用性ソリューションについて / データベースミラーリングをクロスデータベース トランザクション または分散トランザクションと併用する場合の問題 でも、この件について触れられています。
細かな動作については、

が参考になります。
# 日本語 PDF は赤間さん資料だったかと。
この制限が SQL Server 2016 の High Availability Enhancements として緩和されるようになります。
これについては、SQL Server 2016 の情報が公開された時からアナウンスが行われていたのですが、最近になって、

AlwaysOn Availability Groups supports distributed transactions and the DTC on Windows Server 2016. For more information, see SQL Server 2016 Support for DTC and AlwaysOn Availability Groups.

というように情報が追記されたようです。
DTC サポートについては、Windows Server 2016 + SQL Server 2016 の組み合わせで実現されるようで、Windows Server 2012 R2 では制限の緩和は行われていないようです。
# SQL Server の機能ではなく、OS の機能に依存しているのでしょうかね。
設定の方法については SQL Server 2016 Support for DTC and AlwaysOn Availability Groups に記載されています。

SQL Server 2016 Support for DTC and AlwaysOn Availability Groups


Cross-database transactions are supported with AlwaysOn Availability Groups beginning with SQL Server 2016 Community Technology Preview 2 (CTP2). The following requirements must be met:

  • Availability groups must be running on Windows Server 2016 Technical Preview 2.
  • Availability groups must be created with the CREATE AVAILABILITY GROUP command and the WITH DTC_SUPPORT = PER_DB clause. You cannot currently alter an existing availability group.

AlwaysOn 可用性グループを作成する際に、DTC サポートについての設定をすることができ、作成時に有効にすることで設定をすることができます。
# 現状は、作成時にのみ設定ができ、作成後の変更はできません。
実際の動作をシミュレートするスクリプトは作成ができていないのですが、高可用性の環境を構築するにあたっては重要なポイントとなるかと思いますので、この辺のキャッチアップは重要ですね。

Share

Written by Masayuki.Ozawa

9月 7th, 2015 at 8:04 am

Posted in SQL Server

Tagged with ,

Leave a Reply