唐山网站建设

设为主页 加入收藏 繁體中文

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

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

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

关键词: 备份 恢复 作业机制 数据库

1.概述

备份和恢复是数据库治理员保护数据库安全性和完全性的重要操纵。备份是恢复数据库最轻易和最能避免意外的保证方法。没有备份,所有的数据都可能会丢失。备份可以避免表和数据库遭受破坏、介质失效或用户毛病而造成数据灾害。恢复是在乎外产生后,利用备份来恢复数据库的操纵。任何数据保护不论是基于C/S还是B/S的信息治理系统都必须具有备份和恢复数据库的功能。

作为强大数据库SQL SERVER的治理器ENTERPRISE MANAGER,其本身也提供了几种实现和恢复数据库的方法,但这几种方法实现起来,都需要用户对ENTERPRISE MANAGER相当熟习,而且处理步骤较繁锁,操纵起来轻易产生失误。因此我们就需要1种更加简即可行的实现方法。

2.常常使用的备份和恢复数据库的方法

在SQL SERVER ENTERPRISE MANAGER是1种强大的治理工具,它能完成很多功能,备份和恢复数据库是其中的1项基本功能。回结起来,借助这个治理工具有3种常常使用的方法实现备份和恢复数据库。

⑴ 完全手工方式。在这类方式下,选择要备份和恢复的数据库,单击鼠标右键,在快捷菜单中的“ALL TASKS”下选择备份或恢复数据库。这类方式,用户要进行很多步操纵,其中要触及到1些参数,使用起来轻易出错,特别对新手来讲,1旦操纵失误可能带来很大的损失。

⑵ 半手工方式。这类方式就是治理员事前建立备份或恢复数据库的作业,待到备份或恢复数据库的时候,治理员打开“SQL SERVER ENTEPRISE MANAGER”,在“MANAGER”里找到相应的作业,然后履行之。这类方式,固然是基于作业方式实现的,但是治理员必须打开数据库治理器,而且要在繁多的作业中进行选择。1旦选择毛病并履行之,有可能带来意想不到的损失。

⑶ 全自动方式。在数据库治理器里面,治理员事前建立好恢复或备份数据库的作业,然后定制1个履行计划,让计算机在特定的条件下自己履行备份和恢复操纵。这类方式看起来简单、省事,但是机器在异常情况(如掉电)下,就不能依照计划履行了。

3.作业机制的工作原理

作业是ENTERPRISE MANAGER提供的1种定期处理数据的1种方法,前面提到的半手工方式和全自动方式固然利用了作业,但它需要在ENTERPRISE MANAGER里启动和封闭作业;我们要讨论的是在利用程序客户端启动和封闭作业的机制。

作业机制的工作原理,由控制体和履行体两大部份构成。

控制体顾名思义就是控制作业履行的实体,靠具体编程实现。实现时,要调用MSDB数据库的系统存储进程SP_START _JOB,SP_END_JOB等等,同时要访问表SYSJOBHITORY,获得作业履行状态。

履行体就是作业履行的整体,利用系统投进使用时建立。利用系统安装时,要建立数据库、备份和恢复设备、备份和恢复作业。

控制体由用户触发,启动相应的作业,交由履行体履行作业,在履行进程中,履行体履行的每1步状态信息都要写进MSDB数据库的SYSJOBHISTORY表里。同时,控制体不断获得履行状态信息,根据这些信息,控制体决定继续履行还是停止该作业。在作业履行终了或出错停止后,控制体向用户反馈履行结果。

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

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

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数据库。结束时,会有相应成功与否的信息向用户提示。

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

5. 结束语

以作业机制实现数据库的恢复和备份,就是事前在建立备份和恢复数据库的作业,在利用程序客户端用控制体启动相应的履行体来实现之。用这类方式实现数据库的备份和恢复,用户没必要打开数据库治理器进行操纵,用户可以在任何1个利用程序客户端完成操纵。

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

唐山网站建设www.fw8.net
TAG:数据库,备份,方式,机制,作业
评论加载中...
内容:
评论者: 验证码: