定时备份数据库
# TaskRunner 定时备份数据库
# 1. 说明
- 任务运行器 TaskRunner 通过自动化作业,定时执行数据库的备份任务。
- 在使用此功能前,请先确认
数据库设置
中的master
连接设置是否可以测试连接,请在修改服务器的地址,用户名与登录密码,确认连接通顺后使用。
# 2. 设计自动化作业
TaskRunner 的初始示例已包含 定时备份数据库
。下面介绍如何创建及设置。
- 在自动化作业界面,点击
新建
按钮,打开 新建作业的对话框窗口。在常规选项卡中,填写作业名称以及说明。

- 点击
步骤
选项卡,切换至步骤选项,设置要执行的自定程序。在步骤
界面点击新建
按钮,打开新建步骤界面,界面中填写步骤名称
以及命令
。点击确定
。
//数据库备份主程序
//可运用参数:
//database 备份的数据库名称
//dir 备份的目录名称
//compressed 是否启用压缩,设置为0 表示不启用,设置其余值表示启用
//day 设置备份保留的天数
//使用压缩设置的默认程序为7-zip ,可至https://7-zip.org 下载安装包进行安装,压缩后文件后缀名为 zip
{
var dir,database,compressed,day,D,DB,vSQL;
database = iif(UgParams.Values["database"] == "","demo",UgParams.Values["database"]);
if(UgParams.Values["dir"] == "")
dir = "D:\\"
else
dir = UgParams.Values["dir"];
compressed = iif(UgParams.Values["compressed"] == "0","0","1");
day = iif(UgParams.Values["day"] == "","15",UgParams.Values["day"]);
vSQL = "EXEC master.dbo.sp_configure 'show advanced options', 1;" + #13#10 +
"RECONFIGURE WITH OVERRIDE;" + #13#10 +
"EXEC master.dbo.sp_configure 'xp_cmdshell', 1;" + #13#10 +
"RECONFIGURE WITH OVERRIDE;" + #13#10 +
"declare @prefix nvarchar(100)," + #13#10 +
" @datefile nvarchar(100)," + #13#10 +
" @bakfile nvarchar(100)," + #13#10 +
" @zipfile nvarchar(100)," + #13#10 +
" @zipcmd nvarchar(150)," + #13#10 +
" @str_date nvarchar(100)," + #13#10 +
" @sql nvarchar(100)" + #13#10 +
"declare @A nvarchar(100),@B nvarchar(100),@C int,@D int" + #13#10 +
"select" + #13#10 +
" @A= '" + dir + "', --数据库名称" + #13#10 +
" @B= '" + database + "', --备份目录" + #13#10 +
" @C= " + compressed + ", --是否压缩" + #13#10 +
" @D= " + day + " --备份保留天数" + #13#10 +
"--设置备份的目录" + #13#10 +
"set @prefix=@A" + #13#10 +
"set @str_date = replace(replace(replace(convert(varchar(20),getdate(), 120),' ',''),'-',''),':','')" + #13#10 +
"set @datefile = @B +@str_date" + #13#10 +
"set @bakfile = @prefix+@datefile+'.bak'" + #13#10 +
"set @zipfile = @prefix+@datefile+'.zip'" + #13#10 +
"--备份" + #13#10 +
"BACKUP Database @B TO DISK = @bakfile WITH NOFORMAT, NOINIT, NAME = N'Full_Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10" + #13#10 +
"if @C = 1" + #13#10 +
"begin" + #13#10 +
"--压缩zip,需使用7-zip,也可使用其它压缩软件压缩为zip格式" + #13#10 +
"set @zipcmd ='\"C:\\Program Files\\7-zip\\7z.exe\" ' +'a ' +@zipfile+' '+@bakfile" + #13#10 +
"exec master..xp_cmdshell @zipcmd,NO_OUTPUT;" + #13#10 +
"--删除D天之前的备份" + #13#10 +
"set @sql='del '+@A+@B+rtrim(replace(replace(replace(convert(varchar(20),getdate()-@D, 120),' ',''),'-',''),':',''))+'.zip'" + #13#10 +
"exec master..xp_cmdshell @sql,NO_OUTPUT;" + #13#10 +
"end" + #13#10 +
"else" + #13#10 +
"begin" + #13#10 +
"--删除D天之前的备份" + #13#10 +
"set @sql='del '+@A+@B+rtrim(replace(replace(replace(convert(varchar(20),getdate()-@D, 120),' ',''),'-',''),':',''))+'.zip'" + #13#10 +
"exec master..xp_cmdshell @sql,NO_OUTPUT;" + #13#10 +
"end" + #13#10 +
"select 'ok' as msg";
D = new TFDQuery(nil);
//使用数据库设置的连接
DB = UGMM.GetDBConnection("master");
D.Connection = DB;
//使用预设SQL
D.SQL.Text = vSQL;
D.Open;
D.Free;
DB.Free;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

- 点击
计划
选项卡。在界面中设置计划任务的执行时间。

- 这个示例不设置通知选项,点击
[确定]
即可保存。
# 3. 执行自动化作业
设置完成后,启动 TaskRunner ,任务列表中状态显示为 √
,表示为自动化作业已启用。TaskRunner 会在每天固定的时刻启动并执行数据库备份的操作。