🐍备份SQL Server实例中的所有用户数据库到指定目录

在升级WorkFine版本前需要备份数据库,,可以使用以下语句,实现一键备份多个数据库

SQL语句

以下是一个示例脚本,用于备份SQL Server实例中的所有用户数据库到指定目录:

DECLARE @path NVARCHAR(2048)
DECLARE @dbname SYSNAME
DECLARE @statement NVARCHAR(1000)

-- 设置备份文件存放的路径,请确保这个路径对SQL Server服务账户是可写的。
SET @path = 'C:\Backups\' -- 请将此路径替换为你希望保存备份的位置

-- 检查目录是否存在,如果不存在则创建
IF NOT EXISTS (SELECT * FROM sys.endpoints WHERE name = 'BackupDir' AND type_desc = 'FILE')
BEGIN
    EXEC master.dbo.xp_create_subdir @path
END

DECLARE db_cursor CURSOR FOR
SELECT name 
FROM sys.databases 
WHERE database_id > 4 -- 排除系统数据库

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @dbname   

WHILE @@FETCH_STATUS = 0   
BEGIN   
    SET @statement = 'BACKUP DATABASE [' + @dbname + '] TO DISK = N''' + @path + @dbname + '_' + REPLACE(CONVERT(NVARCHAR(255), GETDATE(), 126), ':', '-') + '.bak'' WITH NOFORMAT, NOINIT, NAME = ''' + @dbname + '-完整数据库备份'', SKIP, NOREWIND, NOUNLOAD, STATS = 10'
    PRINT @statement
    EXEC sp_executesql @statement

    FETCH NEXT FROM db_cursor INTO @dbname   
END   

CLOSE db_cursor   
DEALLOCATE db_cursor

请注意:

确保日期格式化字符串适应你的环境需求,避免因特殊字符导致路径问题。在这个例子中,:被替换成了-以适应大多数文件系统的限制。

在运行上述脚本之前,你需要修改@path变量的值为一个有效的、SQL Server服务账户有权访问的本地或网络路径。

实践日志记录

BACKUP DATABASE [WF_WZGL] TO DISK = N'C:\Backups\WF_WZGL_2025-05-30T16-36-03.300.bak' WITH NOFORMAT, NOINIT, NAME = 'WF_WZGL-完整数据库备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
已处理百分之 11。
已处理百分之 20。
已处理百分之 30。
已处理百分之 40。
已处理百分之 51。
已处理百分之 60。
已处理百分之 70。
已处理百分之 80。
已处理百分之 90。
已为数据库 'WF_WZGL',文件 'bnqz' (位于文件 1 上)处理了 7624 页。
已处理百分之 100。
已为数据库 'WF_WZGL',文件 'bnqz_log' (位于文件 1 上)处理了 6 页。
BACKUP DATABASE 成功处理了 7630 页,花费 1.091 秒(54.636 MB/秒)。
BACKUP DATABASE [WF_SZHJXC] TO DISK = N'C:\Backups\WF_SZHJXC_2025-05-30T16-36-04.490.bak' WITH NOFORMAT, NOINIT, NAME = 'WF_SZHJXC-完整数据库备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
已处理百分之 14。
已处理百分之 24。
已处理百分之 33。
已处理百分之 43。
已处理百分之 52。
已处理百分之 64。
已处理百分之 73。
已处理百分之 83。
已处理百分之 91。
已为数据库 'WF_SZHJXC',文件 'SZHJXC' (位于文件 1 上)处理了 2656 页。
已处理百分之 100。
已为数据库 'WF_SZHJXC',文件 'SZHJXC_log' (位于文件 1 上)处理了 7 页。
BACKUP DATABASE 成功处理了 2663 页,花费 0.332 秒(62.650 MB/秒)。
BACKUP DATABASE [WF_WPGL] TO DISK = N'C:\Backups\WF_WPGL_2025-05-30T16-36-04.927.bak' WITH NOFORMAT, NOINIT, NAME = 'WF_WPGL-完整数据库备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
已处理百分之 11。
已处理百分之 22。
已处理百分之 30。
已处理百分之 41。
已处理百分之 53。
已处理百分之 60。
已处理百分之 72。
已处理百分之 83。
已处理百分之 91。
已为数据库 'WF_WPGL',文件 'WPGL' (位于文件 1 上)处理了 3360 页。
已处理百分之 100。
已为数据库 'WF_WPGL',文件 'WPGL_log' (位于文件 1 上)处理了 5 页。
BACKUP DATABASE 成功处理了 3365 页,花费 0.457 秒(57.514 MB/秒)。
BACKUP DATABASE [WF_XTFY] TO DISK = N'C:\Backups\WF_XTFY_2025-05-30T16-36-05.480.bak' WITH NOFORMAT, NOINIT, NAME = 'WF_XTFY-完整数据库备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
已处理百分之 10。
已处理百分之 20。
已处理百分之 30。
已处理百分之 40。
已处理百分之 50。
已处理百分之 60。
已处理百分之 70。
已处理百分之 80。
已处理百分之 90。
已为数据库 'WF_XTFY',文件 'WFXTFY' (位于文件 1 上)处理了 42736 页。
已处理百分之 100。
已为数据库 'WF_XTFY',文件 'WFXTFY_log' (位于文件 1 上)处理了 6 页。
BACKUP DATABASE 成功处理了 42742 页,花费 6.293 秒(53.062 MB/秒)。

完成时间: 2025-05-30T16:36:11.8856146+08:00

SQL语句文件

下载图标
备份全部用户数据库.zip
zip文件
890B

相关文章

© 版权声明
THE END
喜欢就点赞吧
分享