SQLServerのバックアップファイルは、復元先を覚えているかも

DBサーバーにSQLServerのインスタンスを2つ立ち上げて(仮にAとBとします)、インスタンスAで取得したバックアップファイルを、SQL Server Management Studio(SSMS)でインスタンスBに同じ名前のDB名(=データベースファイル名)で復元しようとしたら、「プロセスが使用しています」と言われて、なんだそりゃ?としばらく悩みました。

バックアップファイルを誰かが掴んでいるのかと調べても、そうでもなさそう。じゃあなんだろ…ってことで、結局はデータベースファイルの復元先がインスタンスAのフォルダになっていて、すでに存在しているデータベースファイルと同じファイルを作ろうとしてたからNGっていました。

データベースの復元「オプション」

SQLServerのデータベースファイルは、デフォルトで作成した場合、Microsoft SQL Server\MSSQLxx_xx.インスタンス名\MSSQL\DATAに作られます。

今回はインスタンスAのデータベースファイルは Microsoft SQL Server\MSSQL10_50.A\MSSQL\DATA\ にあって、それをバックアップして、デフォルト設定でインスタンスBに復元したら Microsoft SQL Server\MSSQL10_50.B\MSSQL\DATA\ に復元されると思っていたのですが、実際には Microsoft SQL Server\MSSQL10_50.A\MSSQL\DATA\ に復元しようとしていました。

データベースのバックアップファイルは、元々どこにあったファイルなのかを保持していて、(何らかの条件で)復元の際のデフォルト設定にそれを使うことがあるのかもしれないです。

つーことで、バックアップ復元の際には、ちゃんと復元先フォルダをチェックしましょうね、というオチです。

One Reply to “SQLServerのバックアップファイルは、復元先を覚えているかも”

コメントを残す