1. ホーム
  2. データベース

[解決済み】SQL Serverデータベースをオフラインにすると、極端な待ち時間が発生する。

2022-04-18 18:39:14

質問

開発用データベースのオフラインメンテナンス(ライブバックアップからの開発用データベースの復元)を行おうとしていますが、SQL Server Management Studio経由の「オフラインにする」コマンドは、次のようなパフォーマンスになっています。 極めて 30分以上かかっています。このスピードの問題は何が原因なのか、どのように解決するのか、ネットで調べても出てこないので、途方に暮れています。

いくつかのサイトでは、データベースへのオープン接続がこの速度低下の原因であると示唆されていますが、このデータベースを使用する唯一のアプリケーションは私の開発マシンのIISインスタンスであり、サービスは停止しているので、これ以上オープン接続はありません。

この速度低下の原因は何でしょうか、また、速度を上げるにはどうしたらよいでしょうか。

解決方法は?

追加で検索したところ(gbnさんの回答やKMikeさんの回答に対するu07chさんのコメントに触発された新しい検索ワード)、これを見つけ、2秒で正常に完了しました。

ALTER DATABASE <dbname> SET OFFLINE WITH ROLLBACK IMMEDIATE

(更新)

それでも以下のようなエラーが出て失敗する場合は、次のようなイメージで修正します。 このブログの記事 :

データベース 'dbname' をロックできなかったため、ALTER DATABASE に失敗しました。

次のコマンドを実行すると、データベースをロックしているユーザーを見つけることができます。

EXEC sp_who2

そして、どんなものでも SPID を見つけると、次のコマンドを実行します。

KILL <SPID>

次に ALTER DATABASE コマンドをもう一度実行してください。これでうまくいくはずです。