2016-07-26 46 views
0

在SQL服務器用戶必須按照以下步驟從備份文件恢復數據庫。如何自動執行SQL Server中恢復數據庫的過程?

  1. 右鍵單擊對象資源管理器中的數據庫容器。

  2. 從上下文菜單中選擇恢復數據庫。

  3. 將數據庫指定爲新數據庫或現有數據庫。

  4. 指定從設備恢復的來源。

  5. 選擇備份媒體作爲文件。

  6. 單擊添加按鈕並瀏覽到BAK文件的位置。

是否有任何腳本/命令恢復相同,但沒有執行上述方法?

+0

你也可以使用restore命令代替GUI – TheGameiswar

+0

能否請您幫我用一個例子? – Arnab

+0

https://www.mssqltips.com/sqlservertip/2842/how-to-automate-sql-server-restores-for-a-test-server/ – TheGameiswar

回答

2

就在您單擊SSMS備份/還原嚮導上的最後一個確定按鈕之前,您可以單擊腳本下拉按鈕並選擇腳本到新查詢窗口(腳本下拉列表中的幫助按鈕旁邊,在Source/Database Name之上),它將生成SSMS將針對數據庫執行的Exact命令。因此,您可以使用查詢窗口中的該命令在TSQL中以編程方式執行相同的操作。事實上,你甚至可以把一個存儲過程中,如果你想執行相同的命令像所有的時間,所以:

CREATE PROCEDURE dbo.dbBackup AS 
BEGIN 

    RESTORE DATABASE [MyDataBaseName] FROM DISK = N'C:\SQLData\MyDB.bak' 
    WITH FILE = 1, NOUNLOAD, STATS = 5 

END 

而且把它多了一個層次,你可以說SP分配到一個熱鍵爲在這裏解釋:https://www.mssqltips.com/sqlservertip/1287/assign-shortcuts-to-commands-in-sql-server-management-studio/

要訪問下面的屏幕,打開一個查詢窗口並從菜單中選擇工具 - >選項,然後在環境節點下選擇鍵盤 - >查詢快捷鍵,這將允許您指定一個存儲過程執行最適合你的熱鍵組合。

有一兩件事要照顧全約,雖然是確保這不會取代現有的數據庫,因爲你可能會意外地覆蓋了良好的DB如果恢復命令包括選項

1

「自動化」是在你的問題很寬泛的術語,但如果C#是一種選擇,你可以使用SQLCommand Class以執行還原,如下

sqlCmd.CommandText = "RESTORE DATABASE [" + restoreDbName + "] FROM DISK = 
    N'" + backupFileName + "' WITH FILE = 1, MOVE '" + logicalNameMdf + "' TO '" 
    + restorePathMdf + "', MOVE '" + logicalNameLdf + "' TO '" + restorePathLdf + "', " 
    + " NOUNLOAD, REPLACE"; 

sqlCmd.ExecuteNonQuery(); 
相關問題