• 文章导航绿软下载站软件下载安卓资源苹果资源专题

    您当前所在?#24674;茫?a href="/article/">首页 → 数据库MSSQL → 客户端备份和恢复MSSQL Server数据库

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

    时间:2015/6/28来源:IT猫扑网作者?#21644;?#31649;联盟我要评论(0)

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

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

    1.概述

    备份和恢复是数据库管理员维护数据库安全性和完整性的重要操作。备份是恢复数据库最容易和最能防止意外的保证方法。没有备份,所有的数据都可能会丢失。备份可以防止表和数据库遭受?#33529;怠?#20171;质失效或用户错误而造成数据灾难。恢复是在意外发生后,利用备份来恢复数据库的操作。任何数据维护无论是基于C/S还是B/S的信息管理系统都必须具有备份和恢复数据库的功能。

    作为强大数据库SQL SERVER的管理器ENTERPRISE MANAGER,其本身也提供了几种实现和恢复数据库的方法,但这几种方法实?#21046;?#26469;,都需要用户对ENTERPRISE MANAGER相当熟悉,而且处理步骤较繁锁,操作起来容易发生失误。因此我们就需要?#24674;?#26356;加简便可行的实现方法。

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

    在SQL SERVER ENTERPRISE MANAGER是?#24674;?#24378;大的管理工具,它能完成很多功能,备份和恢复数据库是其中的一项基本功能。归结起来,借助这个管理工具有三种常用的方法实现备份和恢复数据库。

    ⑴ 完全?#27490;?/a>方式。在这种方式下,选择要备份和恢复的数据库,单击鼠标右键,在快捷菜单中的"ALL TASKS"下选择备份或者恢复数据库。这种方式,用户要进行很多步操作,其中要涉及到一些参数,使用起来容易出错,尤其对新手来讲,一旦操作失误可能带来很大的损失。

    ⑵ 半?#27490;?#26041;式。这种方式就是管理员事先建立备份或者恢复数据库的作业,待到备份或者恢复数据库的时候,管理员打开"SQL SERVER ENTEPRISE MANAGER",在"MANAGER"里?#19994;?#30456;应的作业,然后执行之。这种方式,虽然是基于作业方式实现的,但是管理员必须打开数据库管理器,而且要在繁多的作业中进行选择。一旦选择错误并执行之,有可能带来意想不到的损失。

    ⑶ 全自动方式。在数据库管理器里面,管理员事先建立好恢复或者备份数据库的作业,然后定制一个执行?#33529;?#35753;?#25169;?#26426;在特定的条件下自己执行备份和恢复操作。这种方式看起来简单、省事,但是机器在异常情况(如掉电)下,就不能按照?#33529;?#25191;行了。

    3.作业机制的工作原理

    作业是ENTERPRISE MANAGER提供的?#24674;?#23450;期处理数据的?#24674;?#26041;法,前面提到的半?#27490;?#26041;式和全自动方式虽然利用了作业,但它需要在ENTERPRISE MANAGER里启动和关闭作业;我们要讨论的是在应用程序客户端启动和关闭作业的机制。

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

    控制体顾名思义就是控制作业执行的实体,靠具体编程实现。实现时,要调用MSDB数据库的系统存储过程SP_START _JOB,SP_END_JOB等等,同时要访?#26102;鞸YSJOBHITORY,获取作业执行状态。

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

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

    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事件?#34892;?#20837;以下代码:

    //声明相应的变量

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

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

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

    关键词标签:客户端,备份,恢复,MSS

    相关阅读

    文章评论
    发表评论

    热门文章 在SQL server2005数据库下创建?#33529;?#20219;务在SQL server2005数据库下创建?#33529;?#20219;务保护SQL服务器的安全 用户识别问题保护SQL服务器的安全 用户识别问题在SQL Server 2000数据仓库中使用分区在SQL Server 2000数据仓库中使用分区远程链接SQL2000管理网站数据库方法远程链接SQL2000管理网站数据库方法

    相关软件

    ?#20284;?#25490;行 如何远程备份(还原)SQL2000数据库SQL2000数据库远程导入(导出)数据配置和注册ODBC数据源SQL2000和SQL2005数据库服务端口查看或修改SQL触发器在保持数据库完整性中的实际应用SQL Server 2005?#23548;?#21040;2000的正确操作步骤修改Sql Server唯一约束?#31243;窲SP JDBC来连接SQL Server 2005的方法

    11选五开奖结果