2007-02-05

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

来源: 本站收集整理 作者:佚名 评论 0 条
 

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事件中写入以下代码:


(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:通过内存配置来优化SQL Server的性能  
下一篇:手工卸载SQL Server 2000数据库
    评论加载中…
//声明相应的变量

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
共3页: 上一页 [1] 2 [3] 下一页
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号