定時備份資料庫
# 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 會在每天固定的時刻啟動並執行資料庫備份的操作。