2009-07-22 21 views
3

データベースのバックアップは、ファイルが場所Aにいたとき データベースファイルは、その後、ALTER DATABASEを使用して位置Bに移動今WITHを使用してバックアップを復元FILE"replaceで"データベースを復元する - "move with"が必要ですか?

を変更作成したREPLACE場所にあるファイルを使用して作成されたWITH MOVEオプションを指定する必要があります新しい場所と?または、WITH REPLACEは、バックアップが作成された場所に関係なく、現在の場所を使用することを暗示しますか?

答えて

4

WITH MOVEを指定する必要はありません。

+1

ここで私は、MSDNフォーラムに乗ったレスポンスです: 「REPLACE WITHは、現在の場所を使用します論理名が一致するすべてのファイルのファイル。ファイル構造が正確に一致しない2番目のサーバー(たとえば、テストまたはDR)にデータベースを復元する場合に最も適しています。あなたのソースと同じ論理ファイル名(異なるパス、異なるファイルサイズ、異なるファイル名さえ)を持つシェルデータベースを作成すると、簡単なRESTORE WITH REPLACEを実行でき、データベースはシェルの場所に復元されます。 –

+0

これは、バックアップが同じSQLバージョンからのものである場合にのみ有効です。私は、SQL 2008のバックアップからSQL 2012データベースに同じ論理ファイル名を使用しようとしていましたが、失敗していました。WITH MOVEステートメントを発行しなければなりませんでした。 – Brad

+0

@Bradあなたが 'WITH MOVE'を使用しなければならなかったのは、SQL 2008のバックアップがSQL 2008の場所サブツリーでパスにバックアップされたためです。バックアップが作成されるとき、彼らは彼らの物理的なデータファイルが住んでいた場所の完全なパスを覚えています。元の物理ファイルのフルパスを使用して上書きするには、WITH MOVEを使用する必要があります。 SQL 2012には、2008年とは異なるインストールディレクトリが存在するため、WITH MOVEが必要です。これを避ける唯一の方法は、すべてのデータベースを共通ディレクトリ(つまり、 "d:¥DataFiles¥")にホストすることです。 – StarPilot

0

MicrosoftがSQL Server 2012対2008の動作を変更したようです。 場所Aのファイルを使用してデータベースをバックアップした後、ファイルが場所Bに移動すると、 "WITH REPLACE "WITH MOVE"を指定しないと、ロケーションAが存在しない場合でもSQL 2005/2008でリストアが成功します。リストア後、データベースは(復元前と同じように)ロケーションBにファイルを保持します。 ただし、SQL 2012とまったく同じシナリオでは、「WITH MOVE」オプションを使用する必要があるというエラーが表示されて復元が失敗します。

ないことが意図されていたかどうかわからまたはない、私はMicrosoftが文書化された変更を発見していないので...

関連する問題