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

ZDNet软件频道 时间:2009-04-10 作者:陈光柱 林果园 张永平 | 天新网 我要评论()
本文关键词:Mssql SQL SQL Server 数据库 SQL Server
本文以SQL Server为例,总结了常用的几种备份和恢复数据库的方法,分析了作业机制的原理,并提出了一种以作业机制实现恢复和备份数据库的方法。

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. 结束语

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

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

Mssql

SQL

SQL Server

数据库

SQL Server


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134