2011-05-13 108 views
0

我想用圖表恢復整個數據庫nd forevals鍵到服務器上的現有數據庫我想用新的替換,我試着用下面的腳本沒有成功從本地機器到服務器恢復database.bak

drop database DuxburyCaravans  
go 
RESTORE DATABASE stonestore 
    FROM DISK = 'C:\Program Files\Microsoft SQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\DuxburyCaravans.BAK' 
    WITH MOVE 'DuxburyCaravans' TO 'D:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DuxburyCaravans.mdf', 
    MOVE 'DuxburyCaravans_log' TO 'D:\Microsoft SQL Server\MSSQL.1\MSSQL\Data\DuxburyCaravans.LDF' 

但它想出了錯誤:

消息3702,級別16,狀態3,3號線
無法除去數據庫「DuxburyCaravans」 ,因爲它是當前正在使用。
消息3201,級別16,狀態2,行1
無法打開備份設備 'C:\ PROGRAM 文件\微軟SQL服務器 \ MSSQL10_50.MSSQLSERVER \ MSSQL \備份\ DuxburyCaravans.BAK'。 操作系統錯誤3(未能到 檢索此錯誤的文本原因: 15105)。
Msg 3013,Level 16,State 1,Line 1
RESTORE DATABASE異常終止 。

回答

2

RESTORE只能實際的服務器上 - 這是你自己的電腦,或者是一個單獨的機器?

如果它是一個單獨的機器:你不能從本地硬盤還原數據庫到遠程服務器上 - 你需要把*.bak文件到一個驅動器,該服務器可以達到 - 例如服務器自己的本地驅動器或服務器具有映射(和訪問)的網絡驅動器。

+2

這很糟糕。爲什麼我不能這樣做? – DarthVader 2013-01-19 21:50:30

1

你首先需要:

  • 關閉你正在嘗試恢復所有連接到數據庫,或
  • 使用MS SQL Management Studio中,連接到遠程服務器。右鍵單擊根服務器節點,然後選擇活動監視器。展開進程,右鍵單擊每個正在使用數據庫的進程,然後選擇殺死。當然,請謹慎行事。

現在所有連接都已關閉,您可以恢復數據庫。

+0

讓我試試吧.. – 2011-05-13 13:46:18

+1

好的 - 另外,@marc_s對於需要在遠程服務器上的文件是正確的。 – 2011-05-13 16:07:25

2

該錯誤指出數據庫DuxburyCaravans正在使用中。您可以通過更改爲SINGLE模式關閉SQL現有連接

ALTER DATABASE [DuxburyCaravans] SET SINGLE_USER With ROLLBACK IMMEDIATE 
RESTORE DATABASE [DuxburyCaravans] FROM DISK = N'C:\Path\To\Backup.bak' 
ALTER DATABASE [DuxburyCaravans] SET MULTI_USER 
相關問題