2012-04-29 164 views
1
BACKUP DATABASE [MPRM] TO DISK = N'\\rauf\shared\MPRM_15_5_10.BAK' 
WITH NOFORMAT, NOINIT, NAME = N'MPRM-Full Database Backup', 
SKIP, NOREWIND, NOUNLOAD, STATS = 10 

備份過程的工作,而我在shared文件夾(D:\shared\)有一個名爲MPRM_15_5_10.BAK文件。這是從另一臺機器創建的備份。在SQL Server數據庫恢復2005

當我試圖恢復備份,使用下面的腳本

RESTORE DATABASE [MPRM] 
FROM DISK = N'\\rauf\shared\MPRM_15_5_10.BAK' 
WITH FILE = 1, NOUNLOAD, STATS = 10 

我收到以下錯誤

消息5133,級別16,狀態1,行1
Directory查找文件「E:\ DATABASES \ MPRM.mdf」因操作系統錯誤2(系統找不到指定的文件)而失敗。
Msg 3156,Level 16,State 3,Line 1
文件'MPRM'無法恢復到'E:\ DATABASES \ MPRM.mdf'。使用WITH MOVE標識文件的有效位置。
消息5133,級別16,狀態1,行1
文件「E:\ DATABASES \ MPRM_log.ldf」的目錄查找失敗,操作系統錯誤2(系統找不到指定的文件)。
Msg 3156,Level 16,State 3,Line 1
文件'MPRM_log'無法恢復到'E:\ DATABASES \ MPRM_log.ldf'。使用WITH MOVE標識文件的有效位置。
消息3119,級別16,狀態1,行1
規劃RESTORE語句時發現問題。先前的消息提供了細節
消息3013,級別16,狀態1,行1
RESTORE DATABASE正在異常終止。

爲什麼系統詢問關於*.mdf, *.ldf文件?它是否與備份選項相關而不是恢復腳本?

我在登錄時Windows Authentication

+0

您通過現有數據庫還是數據庫不存在?首先你需要設置覆蓋選項。我自己並沒有使用命令行(使用Management Studio中的備份代理),但是我想你需要在恢復時指定文件的目標位置,特別是如果你的目標loc與原始備份路徑不同。 – YvesR 2012-04-29 09:40:11

+2

它試圖將它恢復到與其他機器上相同的路徑。 *消息*告訴你,如果你想讓它使用不同的路徑,你需要使用['WITH MOVE'選項](http://msdn.microsoft.com/en-us/library/ms186858.aspx) – 2012-04-29 09:42:42

+0

@Damien_The_Unbeliever號它會從'MPRM_15_5_10.BAK'恢復到'[MPRM]'。對 ? – Rauf 2012-04-29 09:58:06

回答

3

您需要指定在哪裏存儲的物理文件,當你恢復一個.bak如果目標服務器不具有相同的磁盤/目錄佈局爲原始源服務器。備份文件包含邏輯SQL Server文件以及源服務器上的原始位置(其中位置爲.mdf.ldf的完整物理路徑)。

所以你需要使用這樣的事情:

RESTORE DATABASE [MPRM] 
FROM DISK = N'\\rauf\shared\MPRM_15_5_10.BAK' 
WITH FILE = 1, 
MOVE N'MPRM' TO N'D:\MSSQL\Data\MPRM.mdf', 
MOVE N'MPRM_Log' TO N'D:\MSSQL\Data\MPRM_Log.ldf', 
NOUNLOAD, REPLACE, 
STATS = 10 

在這裏,這命令:

MOVE N'MPRM' TO N'D:\MSSQL\Data\MPRM.mdf', 

指定稱爲邏輯文件MPRM(這是默認的,當你沒有指定在創建SQL Server數據庫時的其他任何操作)應在恢復到物理位置D:\MSSQL\Data\MPRM.mdf(根據需要進行調整)時移動

要只看到什麼是包含一個備份文件中,你可以使用這個命令在這裏:

RESTORE FILELISTONLY 
FROM DISK = N'\\rauf\shared\MPRM_15_5_10.BAK' 

這將顯示您的備份裏面所有的邏輯文件,用自己原來的物理文件一起,他們的支持(在源服務器上,您運行備份命令的位置)。