1. ホーム
  2. sql-server-2008

[解決済み】SQL Serverで異なるデータベースにリストアする方法は?

2022-04-19 03:54:24

質問

のバックアップがあります。 データベース1 1週間前のものです。このバックアップはスケジューラーで毎週行われており、その際に .bak ファイルを作成します。今、私はいくつかのデータをいじりたいので、それを別のデータベースにリストアする必要があります - 。 データベース2 .

こんな質問を見かけたことがあります。 SQL Serverデータベースを同じPCに別の名前でリストアする。 しかし、私は本番サーバーにいるため、そのオプションから外れており、実際にそれを行うことはできません。

にリストアする他の方法はないのでしょうか? Database2 少なくとも、その.bakファイルのデータを参照するにはどうしたらよいでしょうか。

ありがとうございます。

ps: 上記リンクの2番目の回答は期待できそうでしたが、エラーで終了し続けます。

リストアファイルリストが異常終了している

解決方法は?

新しいデータベースを作成し、リストアウィザードで上書きオプションを有効にするか、または。

バックアップファイルの中身を見る

RESTORE FILELISTONLY FROM DISK='c:\your.bak'

は、結果から.mdf & .ldfの論理名をメモしておいてください。

RESTORE DATABASE MyTempCopy FROM DISK='c:\your.bak'
WITH 
   MOVE 'LogicalNameForTheMDF' TO 'c:\MyTempCopy.mdf',
   MOVE 'LogicalNameForTheLDF' TO 'c:\MyTempCopy_log.ldf'

これは、データベースを作成します MyTempCopy の内容で your.bak .

(MyTempCopyは作成しないでください、リストア時に作成されます)


例('creditline'という名前のdbのバックアップを'MyTempCopy'にリストアします)。

RESTORE FILELISTONLY FROM DISK='e:\mssql\backup\creditline.bak'

>LogicalName
>--------------
>CreditLine
>CreditLine_log

RESTORE DATABASE MyTempCopy FROM DISK='e:\mssql\backup\creditline.bak'
WITH 
   MOVE 'CreditLine' TO 'e:\mssql\MyTempCopy.mdf',
   MOVE 'CreditLine_log' TO 'e:\mssql\MyTempCopy_log.ldf'

>RESTORE DATABASE successfully processed 186 pages in 0.010 seconds (144.970 MB/sec).