如何在SQL Server 中恢復(fù)多個(gè)數(shù)據(jù)庫(kù)?(3種方法)
如何一次實(shí)現(xiàn)SQL Server 中恢復(fù)多個(gè)數(shù)據(jù)庫(kù)?通常您可以使用高效的 T-SQL 腳本,或者嘗試使用限制較少的功能強(qiáng)大的軟件。
如何一次實(shí)現(xiàn)SQL Server 中恢復(fù)多個(gè)數(shù)據(jù)庫(kù)?通常您可以使用高效的 T-SQL 腳本,或者嘗試使用限制較少的功能強(qiáng)大的軟件。
遺憾的是SSMS GUI 一次只支持恢復(fù)一個(gè)數(shù)據(jù)庫(kù)。如果您將多個(gè)數(shù)據(jù)庫(kù)備份到多個(gè) bak 文件中,您可以一次將它們?nèi)窟€原嗎?
“答案是肯定的”。一般來(lái)說(shuō),您可以使用有效的 T-SQL 腳本一次性恢復(fù)多個(gè)數(shù)據(jù)庫(kù),但前提是備份文件完全以相應(yīng)數(shù)據(jù)庫(kù)命名并且沒(méi)有日期/時(shí)間等附加信息。
如果你想更靈活地做到這一點(diǎn),還有一個(gè)簡(jiǎn)單的選擇帶有圖形用戶(hù)界面。只需選擇您喜歡的方式。
您可以使用腳本從一個(gè)文件夾中實(shí)現(xiàn)SQL Server 中恢復(fù)多個(gè)數(shù)據(jù)庫(kù)。但在此之前,請(qǐng)連接到實(shí)例并啟用 xp_cmdshell。
1. 單擊“新建查詢(xún)”并輸入以下命令:
-- 允許更改高級(jí)選項(xiàng)。
EXEC sp_configure 'show advanced options',
1;
GO——
更新高級(jí)選項(xiàng)的當(dāng)前配置值。
RECONFIGURE;
GO——
啟用該功能。
執(zhí)行 sp_configure 'xp_cmdshell', 1;
GO
--
更新此功能的當(dāng)前配置值。
RECONFIGURE;
去
“執(zhí)行”查詢(xún),該功能將被啟用。
2.然后您可以使用腳本恢復(fù)SQL Server的多個(gè)數(shù)據(jù)庫(kù)(請(qǐng)將“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
“?注意:”如果您收到錯(cuò)誤“數(shù)據(jù)庫(kù)的日志尾部尚未備份。如果日志包含您不想丟失的工作,請(qǐng)使用 BACKUP LOG WITH NORECOVERY 備份日志。使用 RESTORE 語(yǔ)句的 WITH REPLACE 或 WITH STOPAT 子句只是覆蓋日志的內(nèi)容”,解決方法如提示所說(shuō)。
例如,您可以將還原命令修改為“...WITH FILE = 1, REPLACE, NOUNLOAD, STATS = 10”
或者,您可以使用腳本為SQL Server中的所有數(shù)據(jù)庫(kù)生成恢復(fù)命令,并將它們組合成一個(gè)新腳本來(lái)執(zhí)行。
1. 單擊“新建查詢(xún)”并在 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 文件實(shí)現(xiàn)SQL Server 中恢復(fù)多個(gè)數(shù)據(jù)庫(kù)。
2. 右鍵單擊??結(jié)果中的任何命令,“選擇全選”,然后“復(fù)制”它們(或使用 Ctrl + A 和 Ctrl + C)。
3. 將這些命令粘貼到 SQLQuery 窗口作為新腳本“執(zhí)行”。它將從具有相應(yīng)文件名的 bak 文件中恢復(fù)SQL Server的所有數(shù)據(jù)庫(kù)。
上述腳本僅適用于您的 bak 文件完全根據(jù) SQL數(shù)據(jù)庫(kù)命名的情況,這在實(shí)踐中具有很大的限制性。因此,我想提供一種更方便的方式來(lái)備份和恢復(fù)多個(gè)數(shù)據(jù)庫(kù),甚至整個(gè)實(shí)例。
傲梅企業(yè)備份網(wǎng)絡(luò)版是一個(gè)可靠的集中管理解決方案,用于備份和恢復(fù) LAN 內(nèi)所有臺(tái)式機(jī)、筆記本電腦、工作站和服務(wù)器上的 SQL數(shù)據(jù)庫(kù)。
它適用于 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ù)庫(kù),還支持“文件、分區(qū)、磁盤(pán)和操作系統(tǒng)備份”。
正確安裝軟件及其客戶(hù)端包,然后您就可以控制您想要管理的那些客戶(hù)端計(jì)算機(jī)(當(dāng)然,您可以控制自己的機(jī)器)。
?如何在SQL Server中備份多個(gè)數(shù)據(jù)庫(kù):
步驟 1.在Home選項(xiàng)卡中選擇"SQL Server備份"開(kāi)始。點(diǎn)擊“+添加計(jì)算機(jī)”,檢測(cè)帶有SQL數(shù)據(jù)庫(kù)的計(jì)算機(jī),在彈出的窗口中選擇一臺(tái)進(jìn)行備份。
步驟 2. 單擊+ 添加以檢測(cè)所選計(jì)算機(jī)上的所有實(shí)例。在彈出的窗口中,您可以選擇多個(gè)數(shù)據(jù)庫(kù)或整個(gè)實(shí)例。
步驟 3. 單擊步驟 3 并點(diǎn)擊 “添加存儲(chǔ)”以輸入共享或 NAS 路徑作為存儲(chǔ)端。然后,您還可以根據(jù)需要設(shè)置自動(dòng)備份 SQL數(shù)據(jù)庫(kù) 的計(jì)劃,然后單擊“開(kāi)始備份 ”執(zhí)行任務(wù)。
? “如何從備份中恢復(fù)多個(gè)數(shù)據(jù)庫(kù):”
第 1 步:任何創(chuàng)建的備份任務(wù)都將顯示在““任務(wù)””選項(xiàng)卡中。點(diǎn)擊右上角的“高級(jí)”,然后選擇“恢復(fù)”。
步驟 2 。選擇要還原的計(jì)算機(jī)和所有數(shù)據(jù)庫(kù)。在右上角,您還可以選擇要還原的特定備份(完整或差異)。
步驟 3。 然后,選擇“恢復(fù)到原始位置”或“恢復(fù)到新位置”。使用第二個(gè)選項(xiàng),您可以將數(shù)據(jù)庫(kù)還原到另一個(gè) SQL Server容易地。然后,單擊“開(kāi)始還原”以執(zhí)行它。
Overwrite the existing database(s) : 如果勾選此選項(xiàng),備份的數(shù)據(jù)庫(kù)將覆蓋同名的目標(biāo)數(shù)據(jù)庫(kù)。如果不選中它,則在還原過(guò)程中將省略具有相同名稱(chēng)的目標(biāo)數(shù)據(jù)庫(kù)。
SSMS 還原 GUI 允許您一次僅還原一個(gè)數(shù)據(jù)庫(kù)。如果要一次實(shí)現(xiàn)SQL Server 中恢復(fù)多個(gè)數(shù)據(jù)庫(kù),最常見(jiàn)的方法是使用 T-SQL 腳本。但是,它對(duì)備份文件名有嚴(yán)格的限制,使得將數(shù)據(jù)庫(kù)恢復(fù)到另一個(gè)實(shí)例等操作難以實(shí)現(xiàn)。因此,您也可以試試SQL備份軟件——傲梅企業(yè)備份網(wǎng)絡(luò)版版。
它使操作更加容易。例如,您可以自動(dòng)備份 SQL數(shù)據(jù)庫(kù)只需單擊幾下,即可通過(guò)同樣簡(jiǎn)單的操作一次恢復(fù)多個(gè)數(shù)據(jù)庫(kù)。