🐍SQL Server全量备份单一数据库到指定目录

在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
喜欢就点赞吧
分享