SharePoint 2010 で SQL 2012 可用性グループをフェールオーバーしたときの 403 Forbidden エラー

原文の記事の投稿日: 2012 年 5 月 3 日 (木曜日)

SharePoint 2010 で正常に動作するように SQL 2012 可用性グループをフェールオーバーする機会があり、他の人にも役立つことがあるかと思うので結果を紹介します。一言で言えば、SQL 2012 可用性グループをすべてセットアップしたところ、問題なく動作したということです。グループ内のプライマリ ノードに新しいコンテンツ データベースを作成した後、それをバックアップし、可用性グループ (AG) によって管理されるデータベースの一覧に追加しました。今のところうまくいっています。SharePoint サイトをヒットでき、問題なく表示されます。ただし、AG を新しいノードにフェールオーバーした後は、SharePoint サイトが開かなくなりました。ページのコンテンツの代わりに、403 Forbidden エラーが表示されるようになりました。しかし、本当に苛立たしかったのは、SQL Server Manager を開き、AG Listener に問題なく接続できたことです。別のサーバーでホストされているコンテンツ データベースのテーブルについては、クエリを実行して結果を取得することができました。

長い時間をかけてこれを究明したところ、友人であり SQL 専門の (よい意味での) 変人である Bryan P. が、アプリケーション プール アカウントのデータベース アカウントはデータベースと共に移動したが、SQL ログインが移動していないことを指摘しました。つまり、コンテンツ データベースで SQL Manager を調べ、Security...Users を見ると、そのアプリケーション プールの SQL アカウントを確認できます。しかし、サーバーのトップ レベルのセキュリティ ノードを参照してからログインすると、アプリケーション プール アカウントに対する対応するログイン アカウントがありません。そこで、そのアプリケーション プール アカウントのログインを作成し、AG で管理しているコンテンツ データベースに対する権限を付与しました。このように変更した後は、SharePoint 側ですべてが正常に動作するようになりました。今では、クラスター内の任意のノードにフェールオーバーし、SharePoint サイトを引き続き正常に動作させることができます。

これは憶えておいて損はないことだと思います。新しいアカウントでアプリケーション プールを作成し、AG でコンテンツ データベースを保護したい場合には特に必要です。AG に参加している各 SQL 2012 サーバーに対するログインに、これらの新しいアカウントを追加してください。

これはローカライズされたブログ投稿です。原文の記事は、「403 Forbidden Errors When Failing Over a SQL 2012 Availability Group with SharePoint 2010」をご覧ください。