如何在SQL Server 中恢復多個數(shù)據(jù)庫?(3種方法)
如何一次實現(xiàn)SQL Server 中恢復多個數(shù)據(jù)庫?通常您可以使用高效的 T-SQL 腳本,或者嘗試使用限制較少的功能強大的軟件。
如何一次實現(xiàn)SQL Server 中恢復多個數(shù)據(jù)庫?通常您可以使用高效的 T-SQL 腳本,或者嘗試使用限制較少的功能強大的軟件。
遺憾的是SSMS GUI 一次只支持恢復一個數(shù)據(jù)庫。如果您將多個數(shù)據(jù)庫備份到多個 bak 文件中,您可以一次將它們?nèi)窟€原嗎?
“答案是肯定的”。一般來說,您可以使用有效的 T-SQL 腳本一次性恢復多個數(shù)據(jù)庫,但前提是備份文件完全以相應數(shù)據(jù)庫命名并且沒有日期/時間等附加信息。
如果你想更靈活地做到這一點,還有一個簡單的選擇帶有圖形用戶界面。只需選擇您喜歡的方式。
您可以使用腳本從一個文件夾中實現(xiàn)SQL Server 中恢復多個數(shù)據(jù)庫。但在此之前,請連接到實例并啟用 xp_cmdshell。
1. 單擊“新建查詢”并輸入以下命令:
-- 允許更改高級選項。
EXEC sp_configure 'show advanced options',
1;
GO——
更新高級選項的當前配置值。
RECONFIGURE;
GO——
啟用該功能。
執(zhí)行 sp_configure 'xp_cmdshell', 1;
GO
--
更新此功能的當前配置值。
RECONFIGURE;
去
“執(zhí)行”查詢,該功能將被啟用。
2.然后您可以使用腳本恢復SQL Server的多個數(shù)據(jù)庫(請將“D:\backup\”替換為您自己的“包含所有備份文件的文件夾”):
DECLARE @FilesCmdshell TABLE (
outputCmd
NVARCHAR (255)
)
DECLARE @FilesCmdshellCursor CURSOR
DECLARE @FilesCmdshellOutputCmd AS
NVARCHAR(255)
INSERT INTO @FilesCmdshell (outputCmd) EXEC master.sys.xp_cmdshell 'dir
/BD:\backup\*.bak'
SET @ FilesCmdshellCursor = CURSOR FOR SELECT outputCmd FROM
@FilesCmdshell
OPEN @FilesCmdshellCursor
FETCH NEXT FROM @FilesCmdshellCursor INTO
@FilesCmdshellOutputCmd
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @cmd NVARCHAR(MAX) = 'RESTORE DATABASE
[' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '] FROM DISK =
N''D:\backup\' + SUBSTRING(@ FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '.bak''
WITH FILE = 1, NOUNLOAD, STATS = 10'
EXEC(@cmd)
FETCH NEXT FROM @FilesCmdshellCursor INTO
@FilesCmdshellOutputCmd
END
“?注意:”如果您收到錯誤“數(shù)據(jù)庫的日志尾部尚未備份。如果日志包含您不想丟失的工作,請使用 BACKUP LOG WITH NORECOVERY 備份日志。使用 RESTORE 語句的 WITH REPLACE 或 WITH STOPAT 子句只是覆蓋日志的內(nèi)容”,解決方法如提示所說。
例如,您可以將還原命令修改為“...WITH FILE = 1, REPLACE, NOUNLOAD, STATS = 10”
或者,您可以使用腳本為SQL Server中的所有數(shù)據(jù)庫生成恢復命令,并將它們組合成一個新腳本來執(zhí)行。
1. 單擊“新建查詢”并在 SQLQuery 窗口中輸入以下命令:
DECLARE @folderpath VARCHAR (1000)
SELECT @folderpath =
'D:\Backup\' -- 備份位置
SELECT 'RESTORE DATABASE['+NAME+'] FROM DISK = ''' +@folderpath +name+'.bak'' WITH
NORECOVERY ,
REPLACE, STATS = 5'
FROM master.sys.databases
WHERE name NOT IN
('master','model','msdb','tempdb','distribution')
這將生成一系列命令,用于從同名的 bak 文件實現(xiàn)SQL Server 中恢復多個數(shù)據(jù)庫。
2. 右鍵單擊??結果中的任何命令,“選擇全選”,然后“復制”它們(或使用 Ctrl + A 和 Ctrl + C)。
3. 將這些命令粘貼到 SQLQuery 窗口作為新腳本“執(zhí)行”。它將從具有相應文件名的 bak 文件中恢復SQL Server的所有數(shù)據(jù)庫。
上述腳本僅適用于您的 bak 文件完全根據(jù) SQL數(shù)據(jù)庫命名的情況,這在實踐中具有很大的限制性。因此,我想提供一種更方便的方式來備份和恢復多個數(shù)據(jù)庫,甚至整個實例。
傲梅企業(yè)備份網(wǎng)絡版是一個可靠的集中管理解決方案,用于備份和恢復 LAN 內(nèi)所有臺式機、筆記本電腦、工作站和服務器上的 SQL數(shù)據(jù)庫。
它適用于 Windows 10/8.1/8/7/Vista/XP、Windows Server/2003/2008 (R2)/2012 (R2)/2016、Windows SBS 2003/2008/2011、Windows Home Server 2011 (32/64- bit),支持SQL Server 2005到2019。除了SQL數(shù)據(jù)庫,還支持“文件、分區(qū)、磁盤和操作系統(tǒng)備份”。
正確安裝軟件及其客戶端包,然后您就可以控制您想要管理的那些客戶端計算機(當然,您可以控制自己的機器)。
?如何在SQL Server中備份多個數(shù)據(jù)庫:
步驟 1.在Home選項卡中選擇"SQL Server備份"開始。點擊“+添加計算機”,檢測帶有SQL數(shù)據(jù)庫的計算機,在彈出的窗口中選擇一臺進行備份。
步驟 2. 單擊+ 添加以檢測所選計算機上的所有實例。在彈出的窗口中,您可以選擇多個數(shù)據(jù)庫或整個實例。
步驟 3. 單擊步驟 3 并點擊 “添加存儲”以輸入共享或 NAS 路徑作為存儲端。然后,您還可以根據(jù)需要設置自動備份 SQL數(shù)據(jù)庫 的計劃,然后單擊“開始備份 ”執(zhí)行任務。
? “如何從備份中恢復多個數(shù)據(jù)庫:”
第 1 步:任何創(chuàng)建的備份任務都將顯示在““任務””選項卡中。點擊右上角的“高級”,然后選擇“恢復”。
步驟 2 。選擇要還原的計算機和所有數(shù)據(jù)庫。在右上角,您還可以選擇要還原的特定備份(完整或差異)。
步驟 3。 然后,選擇“恢復到原始位置”或“恢復到新位置”。使用第二個選項,您可以將數(shù)據(jù)庫還原到另一個 SQL Server容易地。然后,單擊“開始還原”以執(zhí)行它。
Overwrite the existing database(s) : 如果勾選此選項,備份的數(shù)據(jù)庫將覆蓋同名的目標數(shù)據(jù)庫。如果不選中它,則在還原過程中將省略具有相同名稱的目標數(shù)據(jù)庫。
SSMS 還原 GUI 允許您一次僅還原一個數(shù)據(jù)庫。如果要一次實現(xiàn)SQL Server 中恢復多個數(shù)據(jù)庫,最常見的方法是使用 T-SQL 腳本。但是,它對備份文件名有嚴格的限制,使得將數(shù)據(jù)庫恢復到另一個實例等操作難以實現(xiàn)。因此,您也可以試試SQL備份軟件——傲梅企業(yè)備份網(wǎng)絡版版。
它使操作更加容易。例如,您可以自動備份 SQL數(shù)據(jù)庫只需單擊幾下,即可通過同樣簡單的操作一次恢復多個數(shù)據(jù)庫。