在WorkFine中执行回写公式,特别是新建的回写公式做测试前,对数据库做备份是很有必要的操作。今天分享下使用SQL语句备份当前数据库的方法
本文目录
隐藏
SQL语句
-- =============================================
-- 功能:动态数据库名称备份脚本(修正版)
-- 说明:使用动态SQL解决变量作为数据库名的问题
-- =============================================
-- 只需在此处修改数据库名称 ↓
DECLARE @DatabaseName NVARCHAR(128) = 'WF_SZHJXC'
-- 只需在此处修改数据库名称 ↑
-- 声明其他变量
DECLARE @BackupPath NVARCHAR(255)
DECLARE @BackupName NVARCHAR(255)
DECLARE @TimeStamp NVARCHAR(50)
DECLARE @BackupDir NVARCHAR(255) = 'C:\Backup\'
DECLARE @DynamicSQL NVARCHAR(MAX)
DECLARE @Description NVARCHAR(255) -- 单独处理描述字段
-- 生成时间戳
SET @TimeStamp = REPLACE(CONVERT(NVARCHAR, GETDATE(), 112), ' ', '') +
REPLACE(REPLACE(CONVERT(NVARCHAR, GETDATE(), 108), ':', ''), ' ', '')
-- 设置备份文件路径
SET @BackupPath = @BackupDir + @DatabaseName + '_Full_' + @TimeStamp + '.bak'
-- 设置备份集名称
SET @BackupName = @DatabaseName + '-Full Backup ' + CONVERT(NVARCHAR, GETDATE(), 120)
-- 设置描述(单独处理避免引号问题)
SET @Description = @DatabaseName + '数据库完整备份带时间戳'
-- 检查数据库是否存在
IF NOT EXISTS (SELECT 1 FROM sys.databases WHERE name = @DatabaseName)
BEGIN
RAISERROR('数据库 %s 不存在!', 16, 1, @DatabaseName)
RETURN
END
-- 构建动态SQL语句(修复引号问题)
SET @DynamicSQL = '
BACKUP DATABASE [' + @DatabaseName + ']
TO DISK = N''' + @BackupPath + '''
WITH
NAME = N''' + @BackupName + ''',
DESCRIPTION = N''' + @Description + ''',
COMPRESSION,
STATS = 10;'
-- 执行动态SQL
BEGIN TRY
EXEC sp_executesql @DynamicSQL
PRINT '数据库备份成功完成';
PRINT '备份文件: ' + @BackupPath;
END TRY
BEGIN CATCH
PRINT '备份过程中出错:';
PRINT '错误号: ' + CAST(ERROR_NUMBER() AS NVARCHAR(10));
PRINT '错误信息: ' + ERROR_MESSAGE();
PRINT '执行的SQL: ' + @DynamicSQL;
END CATCH
GO
实践日志记录

SQL语句文件
SQL-Server全量备份单一数据库到指定目录.zip
zip文件
1.1K
相关文章
© 版权声明
THE END