83

同じサーバー上のデータベースの古いバックアップから新しいデータベースを作成しようとしています。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ステートメントがそのサーバー上のバックアップ元のデータベースを混乱させるのだろうかと思っていました。

ありがとう、すべての助けに感謝します。

4

5 に答える 5

144

私がすべきこと:

  • SQL ServerManagementStudioの[データベース]ノードを右クリックして表示される[データベースの復元...]フロートメニューをクリックします。
  • ウィザードに復元するデータベースと新しい名前を入力します。
  • 重要データベースがまだ存在する場合は、「ファイル」タブの「名前を付けて復元」ファイル名を変更して、「すでに使用されているファイル、上書きできません」というエラーメッセージを回避します。

私がやること

IDk私がこれを好む理由:

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

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

于 2012-04-24T14:28:35.507 に答える
87

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

Sql Server Management Studioで、[データベース]を右クリックし、[データベースの復元...]を選択します。 ここに画像の説明を入力してください

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

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

ここに画像の説明を入力してください

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

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

于 2016-07-13T13:40:34.263 に答える
10

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

ここに画像の説明を入力してください

于 2016-04-13T20:18:30.557 に答える
1

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

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

したがって、サーバーインスタンスにMyDbが既に存在する場合、復元先のサーバーインスタンスには影響しません。

于 2012-04-24T14:38:36.790 に答える
0

問題のスクリプトにはreplaceステートメントがないため、復元スクリプトは次のようになります。

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' ,  NOUNLOAD,  REPLACE,  STATS = 5
于 2021-04-13T10:58:10.727 に答える