一、通过SQL Server代理作业实现(推荐)
步骤说明:
创建备份文件夹
在服务器上创建固定目录(如 D:\DB_Backup),确保SQL Server服务账户有写入权限。
编写备份脚本
使用以下SQL脚本生成带日期的备份文件名,并执行备份:
DECLARE @dbName NVARCHAR(100) = 'YourDBName'; -- 替换为实际数据库名
DECLARE @backupPath NVARCHAR(200) = 'D:\DB_Backup\';
DECLARE @fileName NVARCHAR(300);
SELECT @fileName = @backupPath + @dbName + '_'
+ CONVERT(VARCHAR(8), GETDATE(), 112) -- 格式:YYYYMMDD
+ '.bak';
BACKUP DATABASE @dbName
TO DISK = @fileName
WITH FORMAT, COMPRESSION; -- FORMAT覆盖同名文件,COMPRESSION启用压缩
注:WITH FORMAT 确保每次覆盖同名文件,避免历史文件堆积。
设置文件清理(保留7天)
在备份脚本后添加删除旧文件的命令:
DECLARE @cmd NVARCHAR(500);
SELECT @cmd = 'FORFILES /P "' + @backupPath + '" /M "' + @dbName + '*.bak" /D -7 /C "CMD /C DEL @FILE"';
EXEC xp_cmdshell @cmd; -- 需启用xp_cmdshell(见注意事项)
FORFILES 命令删除7天前的 .bak 文件。
创建SQL Server代理作业
打开 SQL Server Management Studio (SSMS) → 展开 SQL Server代理 → 右键 作业 → 新建作业。
在 步骤 中添加上述完整脚本。
在 计划 中设置每日执行时间(如凌晨2点)。
启用xp_cmdshell
开启高级选项配置
执行以下命令允许修改高级配置项:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
此命令解锁隐藏配置参数。
启用xp_cmdshell组件
执行以下命令激活组件:
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
RECONFIGURE确保配置立即生效。
验证启用状态
运行以下命令检查是否成功:
EXEC sp_configure 'xp_cmdshell';
若config_value和run_value均为1,表示启用成功。
安全建议
仅在需要执行系统命令时临时启用,任务完成后立即禁用:
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;