Denali の Availability Groups のデータベースに接続をする際には、リスナーを経由して接続をすることで自動的にプライマリに接続がされます。
2 ノード構成 (シングルセカンダリ) の Availability Groups の場合は、リスナーを経由しなくても従来から実装されているミラーリングと同様の方法で接続することも可能です。
今回はリスナーを使用しない Availability Groups の接続についてまとめてみたいと思います。
■FailoverPartner を使用した接続
2 ノード構成の場合はシングルセカンダリとなりますので、データベースミラーリングの [プリンシパル] [ミラー] の関係と同じになります。
ミラーリングを使用する場合と同じ接続文字列を使用します。
SSMS も追加の接続パラメーターを使用することでこの接続をテストすることができます。
サーバー名にプライマリのサーバーを指定して、追加の接続パラメーターにセカンダリレプリカと接続をするデータベースを指定します。
# Initial Catalog による接続先のデータベース指定が必須となっています。
現在は、プライマリが稼働していますのでプライマリに接続がされています。
それではこの状態でプライマリを停止させてみます。
フェールオーバー後、初回の実行はエラーとなりますが、
二回目の実行で、セカンダリにつながっていることが確認できます。
データベースミラーリングと同じ動作をしていますね。
データベースミラーリングと同じ動作にするためには、セカンダリロールの接続モードを [接続を禁止] に設定しておかないと想定している動作をしないので注意が必要です。
それ以外の接続モードだと、セカンダリに接続ができる余地が残ってしまうため、フェールオーバー後も以前接続していたサーバーを利用としてしまうようで、Failover Partner に指定したサーバーへ接続がされませんでした。
このあたりに関しては以下の技術文書に記載されているようですね。
Client Connectivity and Application Failover (AlwaysOn Availability Groups)
If an availability group possesses only two availability replicas and is not configured to allow read-access to the secondary replica, clients can connect to the primary replica by using database mirroring connection strings.
ワークグループ環境や非クラスタ環境の場合、Availability Groups は使用することができないので次期バージョンでも引き続きデータベースミラーリングを使用することになると思いますが、新規構築でアプリケーション改修への影響を抑えるということでは、このデータベースミラーリングと同一の文字列が使えるというのはポイントになるかもしれないですね。