当前位置:首页 > 数据库 > 正文内容

SQL Server中恢复多个数据库

2024-11-29数据库2

一次性恢复多个 SQL数据库吗可以吗?

"是的,可以一次性恢复多个 SQL 数据库。通常情况下,只要备份文件的名称与相应的数据库匹配,且没有附加的日期或时间信息,就可以通过有效的 T-SQL 脚本来完成恢复。如果你希望有更灵活的操作,还可以选择使用带有图形用户界面的工具,具体选择取决于你的偏好。"

方法1 .使用脚本来恢复SQL Server中的所有数据库

您可以使用脚本为SQL Server中的所有数据库生成恢复命令,并将它们组合成一个新脚本来执行。

1. 单击“新建查询”并在 SQLQuery 窗口中输入以下命令:

1
2
3
4
5
6
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 文件恢复SQL Server中的多个数据库。

2. 右键单击结果中的任何命令,“选择全选”,然后“复制”它们(或使用 Ctrl + A 和 Ctrl + C)。

将这些命令粘贴到 SQLQuery 窗口作为新脚本“执行”。它将从具有相应文件名的 bak 文件中恢复SQL Server的所有数据库。

方法2: 使用命令从bak文件中恢复多个数据库

您可以使用脚本从一个文件夹中恢复SQL Server中的多个数据库。但在此之前,请连接到实例并启用 xp_cmdshell

1. 单击“新建查询”并输入以下命令:

1
2
3
4
5
6
7
8
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO。
EXEC sp_configure 'xp_cmdshell', 1;
GO
RECONFIGURE;
GO

“执行”查询,该功能将被启用。

2.然后您可以使用脚本恢复SQL Server的多个数据库(请将“D:\backup\”替换为您自己的“包含所有备份文件的文件夹”):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

“注意:”如果您收到错误“数据库的日志尾部尚未备份。如果日志包含您不想丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份日志。使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句只是覆盖日志的内容”,解决方法如提示所说。

例如,您可以将还原命令修改为“...WITH FILE = 1, REPLACE, NOUNLOAD, STATS = 10”

方法3. 使用专业备份工具备份和恢复多个 SQL数据库

傲梅企业备份旗舰版支持Microsoft SQL Server(2005-2022),VMware ESXi(6.0及以上版本)和Hyper-V(Windows 8/8.1/10/11,Windows Server/Microsoft Hyper-V Server 2012 R2及更高版本)。如果您觉得还不错的话可以点击下方按钮进入下载中心下载安装傲梅企业备份旗舰版,然后跟着我们的演示教程一起看看怎么轻松备份数据库吧!

在开始备份数据库之前,我们需要先安装代理,所以请您在主机端登录傲梅企业备份旗舰版,在主界面点击“设备”>“代理设备”>“下载代理”

等待下载完成之后再将此代理客户端安装到您需要备份SQL数据库的计算机上,然后将客户端上的IP通过Web端连接哦。

在安装完代理客户端,并且成功建立控制连接之后,还需要验证一下数据库实例,所以请您点击“设备”>“Microsoft SQL Server”,找到您的数据库,点击其右侧的三个小点图标,选择“身份验证”,并在弹出窗口中选择“SQL身份验证”,再输入账户密码,点击“验证”即可。

注意:除此之外还有一种远程安装代理的方法,就是点击“设备”>“代理设备”>“添加代理”,然后输入客户端计算机的IP地址与用户信息,点击“确定”即可开始远程安装代理。

傲梅企业备份旗舰版备份SQL数据库

安装完代理客户端之后,我们就可以开始备份SQL Server数据库了,请您参考以下流程并逐步进行操作:

步骤1. 在傲梅企业备份旗舰版主界面中点击“任务”>“备份任务”>“新建任务”

步骤2. 在弹出页面中点击备份类型下拉菜单,选择“Microsoft SQL Server备份”

步骤3. 点击设备,选择您想要备份的SQL数据库实例,然后点击“确定”

步骤4. 点击目标,选择一个目标路径用于存储您的备份文件(可以选择本地位置或网络共享路径),然后点击“确定”

步骤5. 点击备份计划,选择您想要的备份方式(完全备份/增量备份/差异备份)和自动备份频率间隔(可以是每天/每周/每月),然后点击“确定”

步骤6. 点击版本清理,选择您想要将备份文件保留多久,并且支持始终保留某个指定完全备份,超出时间的备份版本将自动清除,节省备份磁盘空间,然后点击“确定”

步骤7. 确认无误之后就可以点击右下角的“开始备份”按钮,并选择“添加定时任务并立即备份”“仅添加定时任务”,创建的任务将单独列出和监控,以进行恢复、进度检查和计划更改。

傲梅企业备份旗舰版还原SQL数据库

在此之后,如果您需要还原数据库的话,可以转到“备份管理”>“历史版本”,找到您想要还原的数据库备份版本,点击其右侧的三个小点图标,选择“还原”,然后您可以选择还原到原位置或新位置,非常方便。

结论

SSMS 工具一次只能还原一个数据库。如果需要一次性恢复多个 SQL Server 数据库,通常使用 T-SQL 脚本。然而,这种方法对备份文件名的要求较为严格,因此在将数据库恢复到其他实例时可能会遇到困难。对此,你也可以考虑使用 SQL 备份软件,如傲梅企业备份旗舰版。它使操作更加便捷,比如你可以通过几次点击自动备份 SQL 数据库,并以同样简便的方式一次性恢复多个数据库。