次の方法で共有


AG と DNN リスナーとの相互運用性を備えた機能

適用対象:Azure VM 上の SQL Server

ヒント

可用性グループをデプロイする方法は多数あります。 同じ Azure 仮想ネットワーク内の複数のサブネットに SQL Server 仮想マシン (VM) を作成することで、Always On可用性グループの展開を簡略化し、Azure Load Balancer または分散ネットワーク名 (DNN) を不要にします。 可用性グループを 1 つのサブネットに既に作成している場合は、マルチサブネット環境に移行できます。

特定の SQL Server 機能は、ハードコーディングされた仮想ネットワーク名 (VNN) に依存します。 Always On 可用性グループと 1 つのサブネット内の Azure VM 上の SQL Server で分散ネットワーク名 (DNN) リスナーを使用すると、いくつかの制限が発生する可能性があります。

この記事では、SQL Server の機能と可用性グループ DNN リスナーとの相互運用性について説明します。

動作の違い

VNN リスナーと DNN リスナーの機能の違いに注意してください。

  • フェールオーバー時間: 障害イベントを検出してルーティングを変更するためにネットワーク ロード バランサーを待機する必要がないため、DNN リスナーを使用するとフェールオーバー時間が短縮されます。
  • 既存の接続: フェールオーバー可用性グループ内の 特定のデータベース への接続は閉じますが、フェールオーバー プロセス中は DNN がオンラインのままであるため、プライマリ レプリカへの他の接続は開いたままです。 この動作は、可用性グループがフェールオーバーし、リスナーがオフラインになり、プライマリ レプリカがセカンダリ ロールに移行したときに、通常、プライマリ レプリカへのすべての接続が閉じる従来の VNN 環境とは異なります。 DNN リスナーを使用する場合は、フェールオーバー時に接続が新しいプライマリ レプリカに確実にリダイレクトされるように、アプリケーション接続文字列を調整することが必要になる場合があります。
  • 開いているトランザクション: フェールオーバー可用性グループ内のデータベースに対して開かれているトランザクションは、閉じられてロールバックされるので、手動で再接続する必要があります。 たとえば、SQL Server Management Studio で、クエリ ウィンドウを閉じて、新しいウィンドウを開きます。

クライアントドライバー

ODBC、OLEDB、ADO.NET、JDBC、PHP、および Node.js ドライバーの場合は、接続文字列のサーバー名として DNN リスナー名とポートを指定します。 フェールオーバー後の速やかな接続を確保するために、MultiSubnetFailover=True を接続文字列に追加します (SQL クライアントでサポートされている場合)。

ツール

SQL Server Management Studiosqlcmdおよび SQL Server Data Tools のユーザーは、リスナーに接続するために、接続文字列のサーバー名として DNN リスナー名とポートを指定する必要があります。

現在、SQL Server Management Studio (SSMS) GUI を使用した DNN リスナーの作成はサポートされていません。

可用性グループと FCI

フェールオーバー クラスター インスタンス (FCI) をレプリカの 1 つとして使用することで、Always On 可用性グループを構成できます。 この構成を DNN リスナーと連携させるには、AG DNN IP リストに FCI 仮想 IP アドレスを配置する方法がないため、 フェールオーバー クラスター インスタンスも DNN を使用する必要があります。

この構成では、FCI レプリカのミラーリング エンドポイント URL で FCI DNN を使用する必要があります。 同様に、FCI が読み取り専用レプリカとして使用される場合は、FCI レプリカへの読み取り専用ルーティングで FCI DNN を使用する必要があります。

ミラーリング エンドポイントの形式は ENDPOINT_URL = 'TCP://<FCI DNN DNS name>:<mirroring endpoint port>' です。

たとえば、FCI DNN DNS 名が dnnlsnr で、FCI のミラーリング エンドポイントのポートが 5022 の場合、エンドポイント URL を作成するための Transact-SQL (T-SQL) コード スニペットは次のようになります。

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

同様に、読み取り専用ルーティング URL の形式は TCP://<FCI DNN DNS name>:<SQL Server instance port> です。

たとえば、DNN DNS 名が dnnlsnr、ターゲットの読み取り専用 SQL Server FCI によって使用されるポートが 1444 の場合、読み取り専用ルーティング URL を作成するための T-SQL コード スニペットは次のようになります。

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

既定の 1433 ポートである場合は、URL のポートを省略できます。 名前付きインスタンスの場合は、名前付きインスタンスの静的ポートを構成し、読み取り専用ルーティング URL でそれを指定します。

分散型可用性グループ

分散型ネットワーク名 (DNN) を使用して可用性グループ リスナーを構成する場合、可用性グループの上に分散型可用性グループを構成することはできません。

レプリケーション

トランザクション、マージ、およびスナップショット レプリケーションのすべてにおいて、VNN リスナーをリスナーに接続するレプリケーション オブジェクトの DNN リスナーとポートで置き換えることがサポートされています。

可用性グループでレプリケーションを使用する方法の詳細については、パブリッシャーと AGサブスクライバーと AG、およびディストリビューターと AG に関するページを参照してください。

MSDTC

ローカル MSDTC とクラスター化 MSDTC の両方がサポートされていますが、MSDTC では動的ポートが使用されます。 この動的ポートでは、HA ポートを構成するために標準の Azure Load Balancer が必要です。 そのため、VM は標準の IP 予約を使用する必要があります。または、インターネットに公開することはできません。

2 つのルールを定義します。1 つは RPC エンドポイント マッパー ポート 135 用で、1 つは実際の MSDTC ポート用です。 新しいノードでのフェールオーバーにより MSDTC ポートが変更された後、ロード バランサー規則を新しい MSDTC ポートに調整します。

MSDTC がローカルの場合は、必ず送信通信を許可してください。

分散クエリ

分散クエリは、AG DNN リスナーとポートを使用して構成できるリンク サーバーに依存します。 ポートが 1433 でない場合は、リンク サーバーを構成するときに SQL Server Management Studio (SSMS) の [Use other data source](その他のデータ ソースを使用) オプションを選択します。

FILESTREAM

FILESTREAM はサポートされていますが、ユーザーが Windows File API を使用してスコープ内のファイル共有にアクセスする場合はサポートされません。

FileTable

Filetable はサポートされていますが、ユーザーが Windows File API を使用してスコープ内のファイル共有にアクセスする場合はサポートされません。

リンクド サーバー

AG DNN リスナー名とポートを使用してリンク サーバーを構成します。 ポートが 1433 でない場合は、リンク サーバーを構成するときに SQL Server Management Studio (SSMS) の [Use other data source](その他のデータ ソースを使用) オプションを選択します。

よく寄せられる質問

AG DNN リスナーをサポートする SQL Server バージョンはどれですか?

SQL Server 2019 CU 8 以降のバージョン。

DNN リスナーを使用する場合、予想されるフェールオーバー時間は何ですか?

DNN リスナーの場合、フェールオーバー時間は AG フェールオーバー時間と同じであり、余分な時間は必要ありません (Azure Load Balancer を使用している場合のプローブ時間など)。

SQL クライアントで OLEDB および ODBC と共に DNN を使用するには、バージョンの要件がありますか?

DNN リスナーのサポートには、 MultiSubnetFailover=True 接続文字列を使用します。 これは SQL Server 2012 (11.x) 以降で使用できます。

DNN リスナーを使用するために変更する必要がある SQL Server の構成はありますか?

DNN を使用するために SQL Server で構成を変更する必要はないものの、一部の SQL Server 機能については、考慮が必要な点が多くなる可能性があります。

DNN では、複数のサブネット クラスターがサポートされますか?

はい。 DNS の DNN は、サブネットに関係なく、クラスターによって可用性グループ内のすべてのレプリカの物理 IP アドレスにバインドされます。 SQL クライアントは、サブネットに関係なく、DNS 名の IP アドレスをすべて試行します。

可用性グループ DNN リスナーでは読み取り専用ルーティングはサポートされますか?

はい。 読み取り専用ルーティングは、DNN リスナーでサポートされています。