2011年11月18日金曜日

SQL SERVERのインスタンスをコマンドで再起動する

SQL SERVERのインスタンスをコマンドで再起動したくてネットで調べたら、参考になるものが少なかったのでここに記しておく。

私の環境は、
Windows Server 2008 R2 SP1、SQL SERVER 2005 SP3で、SQL Server AgentとSQL Serverはサービスとして起動している。SQL Server AgentとSQL Serverをサービスとして起動していないとこの手順は有効ではないので注意。

手順は、
1) SQL Server Agentを停止
2) SQL Server インスタンスを一時停止。この一時停止がポイントだ。一時停止をせずにいきなり停止すると、実行中のアプリケーションがあった場合、インスタンスとの接続を切られて異常終了してしまう。これを防ぐために一時停止を行う。しかし一時停止でも、アプリケーション側で接続が切られた時に再接続するようなロジックを書いてないと異常終了してしまうのは一緒。
3) SQL Server インスタンスを停止。
4) SQL Server インスタンスを起動
5) SQL Server Agentを起動

コマンドにすると
net stop "SQL Server Agent (MSSQLSERVER)"
net pause "SQL Server (MSSQLSERVER)"
net stop "SQL Server (MSSQLSERVER)"
net start "SQL Server (MSSQLSERVER)"
net start "SQL Server Agent (MSSQLSERVER)"

ここではインスタンス名をデフォルトの名称にしているが、異なるインスタンスを再起動したければ、MSSQLSERVERの所をそのインスタンス名に置き替えれば良い。

私が試した環境のWindows Server 2008 R2 SP1では、管理者権限がないとコマンドが拒否されて正常に機能しないので注意が必要だ。

参考までに
msdnではインスタンスを停止する際のメモとして以下を記している。
「シャットダウンを正常に行うには、SQL Server インスタンスを停止する前に、SQL Server を一時停止して SQL Server エージェント サービスを停止してください。いずれの操作も net コマンドまたは SQL Server 構成マネージャを使用して実行できます。」

また、サービスの一時停止と再開については
「Microsoft SQL Server のインスタンスを一時停止した場合、サーバーに接続されているユーザーはタスクを終了できますが、新しい接続は許可されません。たとえば、SQL Server のインスタンスを数分間にわたって一時停止し、SQL Server をシャットダウンする前に、接続されているユーザーにシャットダウン メッセージを送ることができます。また、一時停止した SQL Server サービスを再開することもできます。 」と解説している。

http://msdn.microsoft.com/ja-jp/library/ms187463(SQL.90).aspx

0 件のコメント:

コメントを投稿