2017-07-25 94 views
-1

方案:一臺機器上恢復一體機的SQL Server數據庫備份到另一個

  • 我有一個數據庫備份(abc.bak
  • 我把它複製到另一臺機器上的一些路徑假設G:\SQLDB\backup\master_copy.bak
  • 我用下面的T-SQL來嘗試和恢復 - 但我得到錯誤。

T-SQL中使用:產生

RESTORE DATABASE New_DB 
FROM DISK = 'G:\SQLDB\backup\master_copy.bak' 
WITH 
    MOVE 'coop_test_dat' TO 'G:\SQLDB\livedb\new_db_data.mdf', 
    MOVE 'coop_test_log' TO 'G:\SQLDB\livedb\new_db_log.ldf', 
    REPLACE 

錯誤:

消息5133,級別16,狀態1,行1
目錄查找的文件「C:\ SQLDB \ masterdb \ master_blank.mdf「操作系統錯誤3失敗(系統找不到指定的路徑)。

Msg 3156,Level 16,State 3,Line 1
文件'coop_demo'無法恢復到'C:\ SQLDB \ masterdb \ master_blank.mdf'。使用WITH MOVE標識文件的有效位置。

這裏給出的指定路徑是來自新機器中不存在的舊機器。

我該如何解決這個問題?

+1

錯誤消息是關於文件'coop_demo'。你只是移動文件「coop_test_dat」和「coop_test_log」。 (一般來說,你的錯誤信息似乎完全不符合你的方案,但這可能是由於在你的結尾不恰當的替換。嘗試堅持*一個確切的場景,最好不要假設。)嘗試['RESTORE FILELISTONLY' ](https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql)以獲取有關備份中所含文件的完整信息以及正確的「MOVE '子句。 –

+0

coop_demo是舊機器中舊數據庫的名稱...我需要將它恢復到新數據庫名稱:new_db在新機器的新位置 – KoolKabin

+0

'coop_demo'也是*數據庫文件的名稱。爲什麼?因爲錯誤消息是這樣說的。 –

回答

2

什麼的Jeroen建議是,你可能會丟失一些files..so看到所有文件,請使用以下命令..

restore filelistonly from disk ='your .bak path' with file=1 

上述命令的輸出會顯示所有已備份文件,那麼你可以使用恢復與更換

因此,如果恢復的文件列表顯示在下面的邏輯文件名

logicalname 
db_Data 
db_Data1 
db_log 

現在你可以使用

RESTORE DATABASE New_DB 
FROM DISK = 'G:\SQLDB\backup\master_copy.bak' WITH 
MOVE 'db_Data' TO 'G:\SQLDB\livedb\new_db_data.mdf', 
MOVE 'db_Data1' TO 'G:\SQLDB\livedb\new_db_data.ndf', 
MOVE 'db_lof TO 'G:\SQLDB\livedb\new_db_log.log', 
REPLACE