EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

第7回 How it works: SQL Serverの接続編

edited by DB Online   2013/02/26 00:00

ルーティング

  基本的なTDSプロトコルのログイン処理は前述の通りですが、SQL Server 2012のリリースに伴い、TDSのログイン処理の一部に大きな改定が行われました。それが、ルーティング処理の追加です。

 前述のLogin処理におけるやりとりで、サーバーはENVCHANGEというメッセージを返す可能性があるのですが、TDSのバージョン7.4以降からこのメッセージのタイプに 20:Routing が追加されました。クライアントは20:Routingを受け取ると、サーバーから受け取ったルーティング情報をもとに、別のサーバーに対してTDSのログイン処理を行わなければいけません。

  勘のいい方はお気づきかもしれませんが、このルーティング処理は可用性グループの読み取り専用ルーティングを実現するためのものです。SQL Server 2012から、可用性グループを構築するとセカンダリ レプリカへ接続しクエリを発行することができるようになりました。可用性グループ リスナーを構築して読み取り専用ルーティングを構築しておくと、読み取り専用のアプリケーションは自動的に適切なセカンダリサーバーへとルーティングされます。この機能は、TDSプロトコルENVCHANGEメッセージの実装により実現されているのです。

 つまり、可用性グループ リスナーを使用したルーティング機能は、可用性グループ リスナーがクライアント接続を別のサーバーへルーティングしているのではなく、Login処理でサーバーからルーティング情報を受け取った「クライアント」が別のサーバーに対して再度ログイン処理を行っているだけなのです。実際、可用性グループ リスナーはただのネットワーク名リソースなのでルーティングする機能などは持ち合わせていません。SQL Serverとそれに接続するモジュールが、それぞれTDSのENVCHANGEメッセージ タイプ 20:Routing を実装しているだけなのです。

 【参考】
 2.2.7.8 ENVCHANGE


著者プロフィール

バックナンバー

連載:SQL Server 2012 Deep Dive

もっと読む

All contents copyright © 2007-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5