空のデータベースがあります:
DB_Clients
そして、.bak
ファイルからデータベースを復元したい:
OldDBClients.bak
これがパスです:
C:\OldDBClients.bak
そして、これは私のスクリプトです:
USE [master]
GO
RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
実行すると、次のエラーメッセージが表示されます。
メッセージ3154、レベル16、状態4、行15
バックアップセットは、既存の「DB_Clients」データベース以外のデータベースのバックアップを保持します。
メッセージ3013、レベル16、状態1、行15
RESTORE DATABASEは異常終了しています。
誰かがこれがなぜ起こるのか教えてもらえますか?ファイルには読み取りと書き込みのアクセス許可があることを指摘する必要があります。
ありがとう。
既存のデータベースを上書きするには、WITH REPLACE
オプションを使用する必要があります。
RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE
おそらく、WITH MOVE
オプションも指定する必要があります。この場合:
RESTORE FILELISTONLY FROM DISK = 'C:\OldDBClients.bak'
を使用して、MDF/LDFの論理名を確認しますWITH MOVE
オプションを使用します例えば:
RESTORE DATABASE DB_Clients
FROM DISK = 'C:\OldDBClients.bak'
WITH REPLACE,
MOVE 'YourMDFLogicalName' TO '<MDF file path>',
MOVE 'YourLDFLogicalName' TO '<LDF file path>'
空のDB_Clients
データベースにDROP
して、簡単なRESTORE
を使用することもできます。
この構文は次のとおりです。
USE [master]
GO
RESTORE DATABASE DB_Clients FROM DISK = 'C:\OldDBClients.bak' WITH
MOVE 'DB_Clients' TO 'D:\SQLServer\Data\DB_Clients.mdf',
MOVE 'DB_Clients_log' TO 'D:\SQLServer\Log\DB_Clients.ldf', REPLACE
既存のコピーを上書きするようにSQL Serverに指示し、データファイルとログファイルの有効な場所を指定します