数字化校园网MS SQL数据库备份解决方案

时间:2022-06-18 07:52:25

数字化校园网MS SQL数据库备份解决方案

摘要:数字化校园网系统的数据库存储学校日常运作的各种数据,系统必须提供有效的备份和恢复能力,以确保数据库在出现错误后,数据能够尽快的可以被应用所访问。

关键词:Delphi;SQLDMO;WINRAR;MD5;MS SQL

中图分类号:TP3文献标识码:A 文章编号:1009-3044(2010)21-5672-02

Digital Campus Network Backup Solution for MS SQL Database

DENG Jie-hai, ZHONG Cai-hua, ZHOU Hong-juan

(Jiangxi College of Traditional Chinese Medicine, Fuzhou 344000, China)

Abstract: Digital Campus Network System database to store all data in the daily operation of schools, the system must provide an effective backup and recovery capabilities to ensure that the database error, the data that can be applied as soon as possible accessed.

Key words: Delphi; SQLDMO; WINRAR; MD5; MS SQL

在图1中,表示层的客户端正常情况下,通过业务逻辑层的应用服务器访问数据层的数据中心的数据。如果数据中心瘫痪或出现错误,客户端可通过图1中的业务逻辑层的备份服务器,访问备份数据中心的数据。将图1数据中心的数据安全可靠地传送到备份数据中心这一过程所使用到的SQL-DMO、WinRar和MD5加密等技术是文章介绍的重点。

1 调用SQL分布式管理对象(SQL-DMO)备份数据库

SQL-DMO的全称是SQL Distributed Management Objects,SQL分布式管理对象。它是一个集合,包含一组有双重接口的COM。通过SQL-DMO可以控制操作SQL Server 的数据库引擎和复制管理。由于SQL-DMO是一组COM,所以任何可以使用COM的开发工具都可以使用它,包括VB、Delphi、VC、BCB、ASP等等几乎包括所有的Windows平台下的开发工具。

第一步:导入sqldmo,生成类型说明文件

打开Delphi,Project菜单->Import Type Library...,在列表框中找到"Microsoft SQLDMO Object Library(Version 8.0)",可看到Class names列表框中显示出相应的类,由于很多类名与vcl本身的类名冲突(比如TApplication,TTable等),需要修改类的名称(在类的名称前面全加上 SQL 这3个字母),点击按钮"Create Unit",进入漫长的等待过程。由于生成的文件比较大(6万多行的代码),这个过程很容易被误认为死机,稍候片刻。

第二步:修改Type Library文件

经过漫长的等待,终于得到了来之不易的SQLDMO_TLB.pas,然而,当我们Compile的时候却发现这个单元无法编译,提示大意为ID重复定义,把第二个ID改成xID就可通过。

第三步:生成可视组件

Component菜单->Install Component...->在弹出对话框中点 Browse... 按钮,找到路径C:\Program Files\Borland\Delphi7\Imports\SQLDMO_TLB.pas然后确认就可,这时会在activeX面板里生成很多控件。

2 使用winrar软件压缩数据库备份文件

WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件,此函数的参数和功能说明,请查参考文献[2]中对应的内容。在编程实现过程中,需用WIN32 API 函数waitforsingleobject使备份流程处于阻塞等待状态,直到Winrar执行完成才返回,关键代码如下:

Function ExecWinRar(cmd:pchar;visiable:integer):DWORD;

… //定义变量,初始化变量

CreateProcess(nil, cmd, nil, nil, false, Create_new_console or Normal_priority_class,

nil, nil, StartupInfo, ProcessInfo); //创建新的进程

//在执行Winrar过程中,程序流程处于阻塞状态,直到Winrar执行完成才返回

waitforsingleobject(processinfo.hProcess,INFINITE);

GetExitCodeProcess(ProcessInfo.hProcess,Result);//Result获得Winrar执行状态参数

end;

如将当前目录下的sjk.bak文件压缩成test.rar,调用ExecWinRar函数的程序代码如下:ExecWinRar ('C:\Program Files\WinRAR\WinRAR.exe a test.rar sjk.bak', SW_HIDE);

调用ExecWinRar函数将当前目录下的test.rar压缩文件解压至c:\目录下,程序代码如下:

ExecWinRar ('C:\Program Files\WinRAR\WinRAR.exe x test.rar c:\',SW_HIDE);

3 MD5(报文摘要算法)为压缩文件产生128位的指纹

大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。

在图1中,数据中心的数据库备份文件首先采用Winrar工具进行压缩,然后通过MD5算法得到出此压缩文件的“数字指纹”,并且将“数字指纹”通过XML文件发送给图1的备份数据中心。备份数据中心通过FTP协议获得数据中心的数据库备份压缩文件之后,进行MD5计算,将计算的结果与数据中心发送过来的“数字指纹”进行比较,就可以判断数据库备份压缩文件在传输过程是否被篡改。

在项目编码过程中,MD5算法的实现参考了RFC1321说明文档中的源代码,有关RFC1321文档的具体内容请看参考文献[4]指定的网址。

4 结束语

将图1数据中心的数据库进行完全备份,如果文件大小超过10Gb时,使用Winrar工具进行压缩的时间较长。但是,除了第一次对数据库备份需采用完全备份方式,以后数据库只需进行增量备份,而增量备份文件经压缩后非常小。

文章介绍了对Ms SQL数据库进行备份,如果对Oracle数据库进行备份,只需将调用SQLDMO部分的程序接口改为调用oracle的exp和imp命令。

参考文献:

[1] Marco Cantu.Delphi2005从入门到精通[M].北京:电子工业出版社,2006.

[2] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.

[3] Robert Vieira.Professional Microsoft SQL Server 2008 Programming[M].北京:清华大学出版社,2010.

[4] R.Rivest.The MD5 Message-Digest Algorithm[EB/OL]./rfc/rfc1321.txt.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:基于知识管理的教学辅助平台设计 下一篇:即时通讯在移动互联网上的实现