web-dev-qa-db-ja.com

同じサーバー上の別のデータベースのバックアップから新しいデータベースを作成しますか?

同じサーバー上のデータベースの古いバックアップから新しいデータベースを作成しようとしています。 SQL Server Management Studioを使用し、バックアップから新しいDBに復元しようとすると、このエラーが発生します

System.Data.SqlClient.SqlError: The backup set holds a backup of a database 
other than the existing 'test' database. (Microsoft.SqlServer.Smo)

グーグルを回った後、私はこのコードを見つけました

    RESTORE DATABASE myDB

 FROM DISK = 'C:\myDB.bak'

 WITH MOVE 'myDB_Data' TO 'C:\DATA\myDB.mdf',

MOVE 'myDB_Log' TO 'C:\DATA\myDB_log.mdf'
GO

Moveステートメントが、そのサーバー上のバックアップの元となったデータベースを混乱させるのではないかと思っていましたか?

おかげで、すべての助けに感謝します。

62
Flywheel

これはこれより簡単だと思います。

  • 最初に、空のターゲットデータベースを作成します。
  • 次に、「SQL Server Management Studio」復元ウィザードで、ターゲットデータベースを上書きするオプションを探します。これは「オプション」タブにあり、「既存のデータベースを上書き(置き換え)」と呼ばれます。確認してください。
  • 「ファイル」ページでターゲットファイルを選択することを忘れないでください。

ウィザードの左側で「タブ」を変更できます(一般、ファイル、オプション)

115
dani herrera

空のデータベースをまったく作成せずに復元することも可能です。

Sql Server Management Studioで、Databasesを右クリックし、Restore Database ...enter image description here

[データベースの復元]ダイアログで、ソースデータベースまたはデバイスを通常どおり選択します。ソースデータベースが選択されると、SSMSはデータベースの元の名前に基づいて宛先データベース名を設定します。

その後、データベースの名前を変更し、新しい宛先データベース名を入力できます

enter image description here

このアプローチでは、[オプション]タブに移動して[既存のデータベースを上書きする]オプションをクリックする必要さえありません。

また、データベースファイルには新しいデータベース名と一貫した名前が付けられますが、必要に応じてファイル名を変更することもできます。

44
Catch22

上書きデータベースのオプションのチェックは私のために働いた:)

enter image description here

8
Kbdavis07

アーカイブのように考えてください。 MyDB.BakにはMyDB.mdfとMyDB.ldfが含まれています。

Moveで復元すると、HerDBは基本的にMyDB.mdf(およびldf)をバックアップから取得し、HerDB.mdfおよびldfとしてコピーします。

そのため、サーバーインスタンスにMyDbが既にある場合、復元しようとすることはありません。

1
Tony Hopkinson