同じサーバー上のデータベースの古いバックアップから新しいデータベースを作成しようとしています。 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ステートメントが、そのサーバー上のバックアップの元となったデータベースを混乱させるのではないかと思っていましたか?
おかげで、すべての助けに感謝します。
これはこれより簡単だと思います。
ウィザードの左側で「タブ」を変更できます(一般、ファイル、オプション)
空のデータベースをまったく作成せずに復元することも可能です。
Sql Server Management Studioで、Databasesを右クリックし、Restore Database ...
[データベースの復元]ダイアログで、ソースデータベースまたはデバイスを通常どおり選択します。ソースデータベースが選択されると、SSMSはデータベースの元の名前に基づいて宛先データベース名を設定します。
その後、データベースの名前を変更し、新しい宛先データベース名を入力できます。
このアプローチでは、[オプション]タブに移動して[既存のデータベースを上書きする]オプションをクリックする必要さえありません。
また、データベースファイルには新しいデータベース名と一貫した名前が付けられますが、必要に応じてファイル名を変更することもできます。
アーカイブのように考えてください。 MyDB.BakにはMyDB.mdfとMyDB.ldfが含まれています。
Moveで復元すると、HerDBは基本的にMyDB.mdf(およびldf)をバックアップから取得し、HerDB.mdfおよびldfとしてコピーします。
そのため、サーバーインスタンスにMyDbが既にある場合、復元しようとすることはありません。