科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道客户端备份和恢复MSSQL Server数据库(2)

客户端备份和恢复MSSQL Server数据库(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文以SQL SERVER为例,总结了常用的几种备份和恢复数据库的方法,分析了作业机制的原理,并提出了一种以作业机制实现恢复和备份数据库的方法。用户可以不打开数据库管理器,在应用程序客户端就可以方便地实现数据库的备份和恢复。

作者:陈光柱 林果园 张永平 来源:www.ahcit.com 2007年9月4日

关键字: 备份 SQL Server SQL Server 各版本 数据库

  • 评论
  • 分享微博
  • 分享邮件

4.以作业机制实现数据库的备份和恢复

为了便于解释我们以POWER BUILDER实现的一个具体系统为示例,首先看数据库备份的实现步骤。

4.1 执行体的建立

(1)建立应用系统的数据库XCCXXT。

(2)建立备份数据库所使用的设备XCCXXTBAK.DAT。

(3)建立备份作业XCCXXT BACKUP,其中命令行为BACKUP DATABASE XCCXXT TO DISK=“C:\MSSQL7\DATA\BACKUP\XCCXXTBAK.DAT”。

4.2 控制体的实现

在相应对象的“备份”按钮的click事件中写入以下代码:

//声明相应的变量
string ls_database,ls_pass,ls_date,ls_time
integer li_gs,li_gs_o
transaction login_trans
login_trans = creat transaction
IF MessageBox("提示信息","是否真的要进行数据备份操作?", &
                        Exclamation!,OKCancel!,2)<>1 then return
//连接MSDB数据库
login_trans.database   = "msdb"
connect using login_trans;
if login_trans.sqlcode <> 0 then
messagebox("数据库错误信息",login_trans.sqlerrtext)
return
end if
//检测上次该执行体执行结果,用以区别本次执行状况
select max(instance_id) into :li_gs_o from sysjobhistory using login_trans;
if isnull(li_gs_o) then li_gs_o =0
login_trans.autocommit = true
ls_pass = login_trans.logpass
//运行系统存储过程SP_START_JOB,启动执行体
prepare sqlsa from "sp_start_job ?" using login_trans;
if login_trans.sqlcode <> 0 then
messagebox("数据库错误信息",login_trans.sqlerrtext)
login_trans.autocommit = false
disconnect using login_trans;
login_trans.database = ls_database 
return
end if
EXECUTE sqlsa USING ‘XCCXXT BACKUP’;
//检测执行体启动是否正常
if login_trans.sqlcode <> 0 then
messagebox("数据库错误信息",login_trans.sqlerrtext)
login_trans.autocommit = false
disconnect using login_trans;
return
end if
//检测执行体执行的整个过程
DO
uf_sleep (1)
select max(instance_id) into :li_gs from sysjobhistory using login_trans;
if isnull(li_gs) then li_gs =0
LOOP WHILE li_gs<=li_gs_o+1
//运行系统存储过程SP_END_JOB,关闭执行体
prepare sqlsa from "sp_end_job ?" using login_trans;
if login_trans.sqlcode <> 0 then
messagebox("数据库错误信息",login_trans.sqlerrtext)
login_trans.autocommit = false
disconnect using login_trans;
login_trans.database = ls_database 
return
end if
EXECUTE sqlsa USING ‘XCCXXT BACKUP’;
//返回执行结果
li_gs_o=li_gs - 1
select run_ 


----------------------------------------------
s,run_date,run_time  into :li_gs,:ls_date,
:ls_time from sysjobhistory where  instance_id =:li_gs_o using login_trans; 
if li_gs = 1 then 
st_3.text = left(ls_date,4)+'年'+mid(ls_date,5,2)+'月'
+right(ls_date,2)+'日'+' '+&
    left(ls_time,2)+':'+mid(ls_time,3,2)+':'+right(ls_time,2)
messagebox('提示',"数据库备份操作成功!")
else
messagebox('提示',"数据库备份操作失败!")
end if
//断开与数据库MSDB的连接
login_trans.autocommit = false
disconnect using login_trans;
if login_trans.sqlcode <> 0 then
messagebox("数据库错误信息",login_trans.sqlerrtext)
end if

4.3 备份数据库

用户单击“备份”按钮,系统就会备份XCCXXT数据库。结束时,会有相应成功与否的信息向用户提示。

备份是对数据库的进行读操作,执行体执行之前不需要检查用户对数据库的使用状态。而恢复则是对整个数据库进行写操作,在启动执行体之前一定要检查是否有数据库进行写操作,否则容易导致失败。其他恢复数据库的实现步骤类似与备份,限于篇幅此处从略。

5. 结束语

以作业机制实现数据库的恢复和备份,就是事先在建立备份和恢复数据库的作业,在应用程序客户端用控制体启动相应的执行体来实现之。用这种方式实现数据库的备份和恢复,用户不必打开数据库管理器进行操作,用户可以在任何一个应用程序客户端完成操作。

作业机制打破了我们常规对大型数据库备份和恢复必须在数据库管理器里进行的局限性,利用作业机制解决了在应用程序客户端对数据库备份和恢复的难题,为在应用程序客户端实现复杂的数据库维护提供了一个思路。

    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊搁崐椋庢閿熺姴鐭楅幖娣妼缁愭鏌¢崶鈺佷汗闁哄閰i弻鏇$疀鐎n亞浠炬繝娈垮灠閵堟悂寮婚弴锛勭杸閻庯綆浜栭崑鎾诲冀椤撱劎绋忛梺璺ㄥ櫐閹凤拷

    濠电姷鏁告慨鐑姐€傛禒瀣劦妞ゆ巻鍋撻柛鐔锋健閸┾偓妞ゆ巻鍋撶紓宥咃躬楠炲啫螣鐠囪尙绐為梺褰掑亰閸撴盯鎮惧ú顏呪拺闂傚牊鍗曢崼銉ョ柧婵犲﹤瀚崣蹇旂節婵犲倻澧涢柛瀣ㄥ妽閵囧嫰寮介妸褋鈧帡鏌熼挊澶婃殻闁哄瞼鍠栭幃婊堝煛閸屾稓褰嬮柣搴ゎ潐濞叉ê鐣濈粙璺ㄦ殾闁割偅娲栭悡娑㈡煕鐏炲墽鐭嬫繛鍫熸倐濮婄粯鎷呯粵瀣異闂佹悶鍔嬮崡鍐茬暦閵忋倕鍐€妞ゆ劑鍎卞皬闂備焦瀵х粙鎴犫偓姘煎弮瀹曚即宕卞Ο闀愮盎闂侀潧鐗嗛幊搴㈡叏椤掆偓閳规垿鍩ラ崱妞剧凹濠电姰鍨洪敋閾荤偞淇婇妶鍛櫤闁稿鍊圭换娑㈠幢濡纰嶉柣搴㈣壘椤︾敻寮诲鍫闂佸憡鎸鹃崰搴敋閿濆鏁嗗〒姘功閻绻涢幘鏉戠劰闁稿鎹囬弻锝呪槈濞嗘劕纾抽梺鍝勬湰缁嬫垿鍩為幋锕€宸濇い鏇炴噺閳诲﹦绱撻崒娆戝妽妞ゃ劌鎳橀幆宀勫磼閻愰潧绁﹂柟鍏肩暘閸斿矂鎮為崹顐犱簻闁圭儤鍨甸鈺呮倵濮橆剦妲归柕鍥у瀵粙濡歌閸c儳绱撴担绛嬪殭婵☆偅绻堝濠氭偄绾拌鲸鏅i悷婊冪Ч閹﹢鎳犻鍌滐紲闁哄鐗勯崝搴g不閻愮儤鐓涢悘鐐跺Г閸犳﹢鏌℃担鐟板鐎规洜鍠栭、姗€鎮╅搹顐ら拻闂傚倷娴囧畷鍨叏閹惰姤鈷旂€广儱顦崹鍌炴煢濡尨绱氶柨婵嗩槸缁€瀣亜閺嶃劎鈽夋繛鍫熺矒濮婅櫣娑甸崨顔俱€愬銈庡亝濞茬喖宕洪埀顒併亜閹哄棗浜鹃梺鎸庢穿婵″洤危閹版澘绫嶉柛顐g箘椤撴椽姊虹紒妯哄鐎殿噮鍓欒灃闁告侗鍠氶崢鎼佹⒑閸撴彃浜介柛瀣閹﹢鏁冮崒娑氬幈闁诲函缍嗛崑鍡樻櫠椤掑倻纾奸柛灞剧☉缁椦囨煙閻熸澘顏柟鐓庢贡閹叉挳宕熼棃娑欐珡闂傚倸鍊风粈渚€骞栭銈傚亾濮樺崬鍘寸€规洖缍婇弻鍡楊吋閸涱垽绱遍柣搴$畭閸庨亶藝娴兼潙纾跨€广儱顦伴悡鏇㈡煛閸ャ儱濡煎褜鍨伴湁闁绘ǹ绉鍫熺畳闂備焦瀵х换鍌毼涘Δ鍛厺闁哄洢鍨洪悡鍐喐濠婂牆绀堟慨妯挎硾閽冪喖鏌曟繛褍瀚烽崑銊╂⒑缂佹ê濮囨い鏇ㄥ弮閸┿垽寮撮姀鈥斥偓鐢告煥濠靛棗鈧懓鈻嶉崶銊d簻闊洦绋愰幉楣冩煛鐏炵偓绀嬬€规洟浜堕、姗€鎮㈡總澶夌处

    重磅专题
    往期文章
    最新文章