前編では可用性グループを作成し、実際にデータが同期されるところまで設定しました。
ここでは、ユーザーの追加や接続テストなどをしてみます。
##全体構成
- その1:前提知識の整理と基礎環境構築編
- その2:WSFC(Window Server Failover Clustering)構築編
- その3:AlwaysOn構築編
- その4:接続確認編
- その5:テストしてみる
- その6:その他(可用性グループへのDB追加など)
##本編での主な内容
- 接続ユーザーの追加(包含データベース設定)
- アクセスしてみる
##接続ユーザーの追加
可用性グループに追加されたDBにアクセスするユーザーは通常のユーザーではダメです。
SQL Serverでは、データベースのユーザーと、ログインが別の概念になっているため、データベース単位で同期されるAlwaysOnでは、通常のログイン機構がうまく機能しないためです。
そこで、データベースにユーザー情報を含ませる「包含データベース」を構成し、AlwaysOnでもうまく機能するユーザーを追加します。
包含データベースを利用せずに、全てのサーバに同じSIDのユーザーを作る方法もあるようですが、ここでは王道?の包含データベース設定を行ないます。
###包含データベースの設定
手順としては、
- SQL1,SQL2のSQL Server全体のプロパティにて、「包含データベース」を"true"にします。
- 次に包含データベースにするDBのプロパティにて「コンテインメントの種類」を"部分"に設定します。
という感じです。
####包含データベースを有効にする
Mangement Studioでデータベースの最上位を右クリックして、プロパティを開き、詳細設定を選択します。
そして「包含データベースの有効化」をTrueに変更します。この操作はSQL1,SQL2の両方で行って下さい。
####コンテインメントの種類を部分にする
今度は、可用性グループに参加させたDBを選択し、右クリックしてプロパティを開きます。
そして、オプションの設定を選択し、「コンテインメントの種類」を部分にします。
このステップでAlter Tableするエラーに何度か遭遇しました。同期中でロックされてるのか?など、いろいろ考えましたが、原因はテーブルのデザイン(エディタ)を開きっぱなしにしていることでした。実行済のクエリエディタが開いていてもダメなようです。
なお、デザインエディタ等を閉じてもだめな場合は、Management Studioの利用状況モニターから対象のDBを掴んでるプロセスが無いか確認んし、必要なら強制終了すればいいと思います。
####ユーザーを作成する
なんとかコンテインメントの種別を部分に変更できたら、いろいよユーザーを追加します。
全体のログインではなく、各データベースのセキュリティ、ユーザーから、新しいユーザーを追加します。
ユーザー名、パスワードを設定します。
その後、メンバーシップにて、ユーザーに付与する権限を目的に応じて選択します。
##アクセスしてみる
では、実際に作成したユーザー情報やリスナーでアクセスできるか試してみます。
なお、実運用では、DMZに設置されたWebサーバからアクセスするというなケースが多いと思いますが、わざわざWebサーバを立てるのもなんですので、ADにSQL Serverのクライアントツールをインストールして、接続実験をしてみます。
###クライアントツールのインストール
とりあえず、ここではコマンドラインツールであるsqlcmdを使ってみます。
sqlcmdはSQL Serverのインストールディスクの中から、基本ツールをインストールすると入ります。Feature Packなどからも個別にインストール可能なようです。
インストールできたら、接続できるか確認してみます。
書式は、
sqlcmd -S hostname -U username -P password -d database
包含データベースへのアクセスの場合はDB名を指定します。
と表示されれば、ログイン成功です。何か操作を行ってみましょう。
ここまでで、AlwaysOnの基本構成は終わりました。フェールオーバーできるか等、確認したいところですが続きはその5で。