SQL Server 自动备份、自动删除过期文件
- SQL Server
- 2020-08-28
- 20热度
- 0评论
方式一:
使用SQL Server计划任务执行sql命令:
declare @dir nvarchar(255)
declare @dbName nvarchar(255)
declare @dbPath nvarchar(255)
declare @dateTime nvarchar(20)
declare @deleteDay int
set @dir='D:\DB_BackUp\' --备份文件存储路径(需修改)
set @dbName='Test' --数据库名称(需修改)
set @deleteDay=30 --删除30天前的备份文件(需修改)
set @dateTime=convert(nvarchar,getdate(),120)
set @dateTime=replace(@dateTime,'-' ,'')
set @dateTime=replace(@dateTime,':' ,'')
set @dateTime=replace(@dateTime,' ' ,'')
set @dbPath=@dir+@dbName+'_'+@dateTime+'.bak'
backup database @dbName to disk=@dbPath with name=@dbName,stats=10,COMPRESSION--开始备份,并压缩
set @dateTime=convert(nvarchar,dateadd(dd,-@deleteDay,getdate()),120);
execute master.dbo.xp_delete_file 0,@dir,N'bak',@dateTime,1; --开始删除@deleteDay天前的备份文件
方式二:
使用osql.exe工具执行sql语句文件:
1、将方式一的sql命令保存为runbackup.sql
2、新建批处理文件,内容如下:
osql.exe -U sa -P 123456 -S 127.0.0.1 -i runbackup.sql -o log.txt
::删除30天前的备份文件(另一种删除过期文件方法)
::forfiles /p "D:\DB_BackUp" /m *.bak /d -30 /c "cmd /c del @path"
说明:
-S IP+端口
-U 用户名
-P 密码
-d 数据库
-i 待执行的sql语句文件
-o 指定一个文件名称,把查询结果输出到这个文件中
-Q 执行的sql语句

鲁ICP备19063141号
鲁公网安备 37010302000824号