読者です 読者をやめる 読者になる 読者になる

SQL Server 2008 ExpressEditionでのデータベースの"自動終了"オプション

SQL Serverにはデータベース毎に"自動終了"というオプションがあり([データベースのプロパティ] ([オプション] ページ))、自動終了を有効にしていると接続がなくなった時点で、データベースがシャットダウンされてリソースが解放されます。再度、接続があると自動的にデータベースが開始されます。

これはデスクトップアプリケーションなどの組み込み用途の場合にリソースを節約するためだと思います。Management Studioからの接続している状態だと自動終了されませんが、コネクションプーリング経由で接続し一定時間使用されないと自動的にコネクションをクローズするような挙動のアプリケーションだと、自動終了が発生してバッファが解放されるため、再起動後の検索パフォーマンスに影響があります。

MSDE(SQL Server 2000)のころには、このオプションはデフォルトで無効になっていたと思うのですが、2005から有効になるように変更になったようです。また、無効に変更しても、該当データベースをデタッチして再度、アタッチすると有効になるようです。ERRORLOGを見て"Starting up database ****"というメッセージが頻繁に出力されていて気付きました。

コマンドから確認する場合には、以下のコマンドを実行して結果に"autoclose"が含まれていると、自動終了が有効になっています。

sp_dboption データベース名

無効にする場合には、以下のコマンドを実行します。

ALTER DATABASE データベース名 SET auto_close OFF