SQL Server の障害時はシステムデータベースのリストア時に SQL Server をシングルユーザーモードで起動することがあります。
シングル ユーザー モードでの SQL Server の起動
SQL Server サービスのスタートアップ オプションの使用
クラスター環境でない SQL Server の場合では、コマンドプロンプトから [sqlservr.exe ?m] で SQL Server を起動させるか、SQL Server 構成マネージャーでスタートアップパラメーターに [-m] を指定します。
# SQL Server Agent や Reporting Services のサービスを停止していないと、これらのサービスがシングルユーザーモードの接続をとってしまうので注意が必要だったりしますが。
今回の投稿ではこのシングルユーザーモードをクラスター環境で実行するための手順についてまとめてみたいと思います。
■クラスター環境の SQL Server をシングルユーザーモードで起動
クラスター環境の SQL Server の構成ですが以下のようになっています。
SQL Server のデータベース / ログは共有ディスク上に配置しますが、SQL Server のサービスに必要なプログラムに関しては各サーバーのローカルディスクに配置されています。
サービスに関しては各サーバーのローカルサービスを直接起動するのではなく、クラスターサービスから SQL Server のリソース DLL を経由して起動されることになります。
そのため、各サーバーの SQL Server のサービスは手動起動となっています。
クラスター環境の SQL Server をシングルユーザーモードで起動する場合ですが、サーバー名とディスクのリソースだけオンラインにした状態で、各サーバーのローカルで SQL Server を起動させれば SQL Server を起動させることが可能です。
# 正確にはサーバー名というよりは IP アドレスのリソースが起動している必要があるようですが。
実際に起動するためには、まずサーバー名とディスクだけをオンラインの状態にして、
SQL Server を [-m] オプションを設定して起動させます。
# 管理者として実行したコマンドプロンプトでないと正常に起動できないかもしれません。
これでシングルユーザーモードでクラスターの SQL Server が起動した状態になります。
シングルユーザーモードで起動していますので 2 ユーザー以上が接続をしようとするとエラーとなります。
シングルユーザーモードはクラスターからではなく、通常の SQL Server の起動と同じになりますので、方法さえ知っていればさほどつまずくことはなさそうですね。
余談ですが、サーバー名のリソース (ネットワーク名 / IP アドレス) がオンラインにできない場合は、SQL Server のクラスターで使用している IP アドレスを以下のように追加の IP アドレスとして直接割り当てることで、クラスターのサーバー名をオンラインにしなくても SQL Server をローカルのサービスから起動することができます。
[…] 前回、クラスター環境の SQL Server をシングルユーザーモードで起動 という投稿を書きました。 この投稿ではクラスターのサービス (Cluster Service) が起動した状態が前提となっていました。 […]
クラスター環境の SQL Server をクラスターサービスが停止した状態で起動する方法 « SE の雑記
31 5月 11 at 08:27