NET技术备份还原DBMS的一项新技术

4004
    


来源:
Licence:
联系:
分类:
平台:
环境:
大小:
更新:
标签:
联系方式 :
免费下载 ×

下载APP,支持永久资源免费下载

限免产品服务请联系qq:1585269081

下载APP
免费下载 ×

下载APP,支持永久资源免费下载

下载APP 免费下载
下载 ×

下载APP,资源永久免费


如果出现不能下载的情况,请联系站长,联系方式在下方。

免费下载 ×

下载论文助手APP,资源永久免费

免费获取

如果你已经登录仍然出现不能下载的情况,请【点击刷新】本页面或者联系站长


二.译 文

应用XML和.NET技术备份还原DBMS的一项新技术

= 1 \* ROMAN \* MERGEFORMAT I. 引 言

所有DBMS都有完整地备份功能,使得整个数据库作为一个副本保存到硬盘存储设备(CD,DVD,磁带......)的特定地方。那么应该问的主要问题是:1)我们怎样才能保存数据库的一些特定项目?2)我们怎样才能只备份一个大数据库的一张表?比如数据库大小是300GB,为了以后还原一张表需要我们备份整个DBMS吗?这得需要消耗多少时间/空间?

另一方面,绝大部分公司,由于应用程序的不同来源,他们使用不止一个DBMS,像SQL Server,Oracle,Sybase,DB2以及其他数据库。它们的每一个都有自己特定的接口和备份还原的工具。数据库管理员有必要学习和掌握所有这些工具吗?当然没必要。为了解决这一问题,我们提出了只使用统一和友好用户界面的一项新技术,这项技术用一种方案选择具体条款备份还原数据库而不需要了解每个DBMS是如何工作的,也不需要公开它们。管理员能选择某个条款备份/还原而不是备份/还原整个DBMS,从而让管理员不必掌握任何DBMS备份/还原工具。

这篇论文中,我们完成了以下几点:

部分地备份和还原不同数据库的数据条目。

提供一个独特的友好接口能完整地备份和还原不同DBMS而不需要运行这些系统。

管理员现在可以在本地或者异地备份还原数据库。

= 2 \* ROMAN \* MERGEFORMAT II. 相关工作

所有知名的DBMS都能备份还原现有数据库。假设我们正处理一个巨型数据库,发生了错误和损坏;我们未能访问这个数据库。就应这个,我们将会丢失整个数据吗?每个DBMS提供了一个备份还原操作(任务)让我们在任何我们需要的时候恢复我们的旧数据(我们将回到零重头再来吗?)。

目前,备份/还原DBMS也没有提供备份还原DBMS的某一条目。我们提出的技术能让用户部分地备份还原以下DBMS条目:

(1)存储过程(2)函数(3)触发器(4)视图(5)表(6)表中记录

选择条目之后,备份文件将以XML文档保存,因为其简单可靠。

= 3 \* ROMAN \* MERGEFORMAT III. 备份类型

在信息技术中,备份指的是复制数据从而在数据丢失发生之后这些额外的副本可以拿来恢复到初始状态。这些额外的副本通常被被称作“备份文件”。备份文件主要用作两个目的。第一是灾难之后恢复状态(称作灾难恢复),第二是一些小数量文件被意外删除及损坏之后能恢复过来。

你可以执行不同类型的备份。例如SQL Server 2008有三种类型的备份:完全备份,差分备份和事务日志备份。Oracle 11g数据库有两种类型的备份:冷(脱机)备份和热(联机)备份。

SQL Server类型

完全备份

完全数据库备份是默认备份,是其他所有备份类型的出发点。一个完整地数据库备份涵盖整个数据库,包括文件中事务日志不包括的任何未确定范围的所有条目。直接从磁盘读出页从而提高操作速度。

差分备份

差分备份涵盖了自从上一次完全数据库备份后修改了的所有数据。差分备份将提高备份还有恢复的速度。因为只涵盖了那些修改过的和最新确定的范围,差分备份比完全数据库备份更快更小。

事务日志备份

事务日志备份包括一系列数据库的修改。事务日志的备份文件提供了数据库事务的历史记录。日志的备份之后可以用在恢复过程中完整地还原数据库到某个时间点。事务日志文件用来通过前滚(重做)已提交的未影响到数据库的修改以及回滚(撤销)未提交的事务来还原数据库。日志备份比差分备份和完全备份更小更经常使用。

Oracle备份类型

冷备份

冷备份是指当数据库不在运行——即用户未登录——因而无活动进行更易于备份。这也叫做脱机备份,这只提供一个只读一致的副本而不处理活动事务。你必须确保在备份过程中归档的重做日志也必须备份起来。热备份不同于冷备份的只是在于数据库的部分一次性备份。

热备份

如果你的数据库是关键任务,即它要一周7天,每天24小时运行(银行和ATM取款机,通信......)在这样的情况下,你将不得不执行联机或者热备份。

= 4 \* ROMAN \* MERGEFORMAT IV我们的解决方案所用到的技术和方法

XML

有些人认为可扩展性标识语言(XML)是万维网技术队伍中最为重要的新技术之一。它提供表示信息的一种标准方式,使得信息可以在连接Internet的众多设备间存储和交换。它还能让任何不同的软件系统操纵那些信息。[9,10]

我们可以观察到由于数据的存储和组织方式以及.NET技术与XML之间交互的简易型,XML很容易编写,我们使用XML容纳我们的备份文件;即备份的数据库条目保存在XML文档中。

.NET技术

ASP.NET由微软由他们最大的技术技术之一创建而来。Web编程人员可以使用它们想用的编码语言编写ASP.NET,从Perl到C#当然还有VB.NET以及一些额外的.NET潜语言。

ASP.NET是服务器端脚本技术,能让脚本(嵌入在Web网页中)被internet或Web服务器执行。

我们在所提出的技术中使用.NET技术,这是因为作为ASP.NET类中最重要的类之一的“DataSet”类能绑定数据库表,能读入/写进XML文档。

Microsoft SQL Server 2008

我们提出的技术中它被用作主要的DBMS:

表Users:包括用户名及密码,让用户登录访问我们的网站。

表Statements:我们软件使用的所有查询都保存在这张表中。主要思想是参数化查询以便之后轻易地添加新的DBMS。目前软件支持两种DBMS:SQL Server 2005和Oracle 10g。假设我们之后被要求让系统支持新的像Sybase数据库管理系统,我们要做的就是:做少量的代码修改,在statements表中添加必要的查询将解决问题。

注意:为了从.NET连接到任意数据库管理系统,我们可以使用一些预定义的类,像System.Data.SqlClient类,然后我们定义连接字符串(ConnString)作为字符串,定义连接Conn作为新的SQLConnection(ConnString)。

使用Conn.Open()就能开始访问MSSQL服务数据库管理系统。

类似地,我们可以访问Oracle数据库管理系统:将System.Data.SqlClient换成System.Data.OracleClient将连接Conn作为新的SQLConnection(ConnString)换成将连接Conn作为新的OracleConnection(ConnString) ,然后使用Conn.open()。

= 5 \* ROMAN \* MERGEFORMAT V. 提出的方法

一种备份不同数据库管理系统的新设计与实现被开发。主要思想是基于使用ASP.NET和XML技术创建统一接口。

这技术被应用于两个知名的数据库管理系统MSSQL Server 2008和Oracle 11g。考虑到在某些紧急情况时需要备份(例如大楼失火),这种情况下数据库管理员接触不到服务器。我们如何将数据库备份到安全的地方呢?简单的解决办法应该是使用互联网。因而,解决方案是建立一个网站。数据库管理员无论在何地都能备份还原数据库。

应用程序的描述

启动页面

要求用户输入用户名及密码,如果两者都有效,将允许获得访问其它页面的权限。在无效的情况下,将弹出对话框要求用户输入正确的用户名及密码。

网站支持两种数据库管理系统(其它的之后可以轻易加入):SQL Server 2008和Oracle 11g。用户可以自由选择其中之一以做备份或还原操作。

“退出”按钮除了“登录”页面其它页面都可见。一旦用户点击它,此按钮将调用“断开所有”方法终结与现有数据库的所有连接,然后转到“登录”页面。

连接页面

这页面分为两个页框:

连接页框:用来添加测试连接组件。这个页框中包含三个字段和一个按钮:服务器名,用户名,密码和测试按钮。服务器名由系统动态检索。用户应该选择这些服务器中的一个,并输入正确的用户名及密码(用来连接)。测试按钮用来测试是否成功建立连接。

活动页框:用来选择备份或者是还原。有两类备份:

(1)部分备份(2)完全备份

选择的服务器(之前的页面)的所有数据库将被检索然后加到下拉列表中。用户应该选择一个来部分地(完全的)备份。一旦数据库被选中,用户就要选择两种备份类别之一。

部分备份页面

这里,我们测试系统的一部分,以区别于其他现有系统。选好一数据库并且选择“部分备份”后,打开一页面,在这个页面我们选择要备份的项目。

连接字符串显示在页面顶部的显示所选择的服务器的文本标签的下面。

看看组合框,我们可以选择存储过程,视图,函数,触发器,表和某些记录来备份。

从上面的图中,我们应该注意到:

如果没有项目存在(像在函数和触发器中),复选框列表变成“灰色”。

如果表是空的(没有完整记录),表显示成没有任何复选框的空表(像“teacher”表)。

如果一张表未选中,选中表中任意记录都是无意义的。

选择项目之后,要输入备份文件(XML文档)的名字。备份保存在“C:\”目录。

请注意如果XML文件受损,另一份XML文件的拷贝保存在目录C:\Backups\MyBackup.xml。

为保证最大的安全,另一个额外的拷贝可以保存远程FTP服务器上。

XML文档内容包括:

所选择的数据库管理系统:为了防止重叠,如果我们是从SQL Server 2005备份数据库,我们就必须在SQL Server 2005中而不是在Oracle 10g中还原。这因为这样,XML文档的首部应包含DBMS:



SQL2008



所选择的数据库:与其所有的属性(name,dbid,Sid,mode.....)。

所有选择的项目:与其属性(name,id,xtype,parent....)。

所有选择的记录(字段和值):



1

user1

pswrd1

2

user2

pswrd2



这里,从“users”表里选择了两个用户。

注意到备份支持“并发控制”,即用户最近访问了数据库,备份将保持最后保存的数据而不断开与数据库的连接。

完整备份页面

完整备份的目标类似于任何备份/还原数据库管理系统工具,我们可以从不同数据库管理系统备份数据库。选择了一数据库并且选择“完全备份”选项后,打开一页面备份数据库。备份文件以文本框中的名字保存在“C:\”目录下。

还原页面

有四类还原

部分还原(数据库已存在)页面 部分还原(数据库新增)页面

完全还原(数据库已存在)页面 完全还原(数据库新增)页面

就像备份一样,我们可以部分或完全地还原数据库。我们可以将数据库还原到已存在的数据库中,即替换已存在的数据库,或创建新数据库并还原。

部分还原(数据库已存在)页面

数据库的所有项目自动删除,数据库变空。新内容(视图,触发器,表.....)从XML文档中转移到空数据库中。

XML文档首部防止了不同数据库的重叠,但是如果用户选择了不是备份文件的XML文档将会发生什么呢?

答案很简单,XML文档的首部以及数据库名的标签保证了备份文件的正确性。如果它们不存在,XML文档就不是备份文件。

部分还原(数据库新增)页面

它类似于上一节,但唯一的区别是用户没有选择现存数据库的任何一个来恢复XML文档。它创建新数据来容纳XML文档内容。数据库命名为用户输入文本的名字。

完整还原(数据库已存在)页面

如前所述,完全备份的主要目标是图形用户界面的“统一性”,其中,我们可以从不同数据库管理系统备份数据库。

这里,在完全还原中,我们准备实现同样的目标。这个简易的接口能让数据库在不同的数据库管理系统还原。我们先还原到已存在的数据库中。

这就是可以在查询分析器中执行的小小的查询操作(见下面在SQL Server 2005中的查询):

RESTORE DATABASE My_Database FROM DISK='C:\MY_BACKUP.BAK'

完整还原(数据库新增)页面。

它将备份文件还原到新创建的以用户输入文本框(图12)中名字命名的数据库中。

请注意,如果备份文件已被另一个数据库(恢复),那么还原过程将会失败,弹出对话框提醒用户。

两个问题:我们提出的技术中面临两个问题:完整路径和读/写图片。

完整路径问题:我们试图在Internet Explorer 8(IE8)和Mozilla浏览器下运行。它运行成功,但问题是在还原页面,当用户选择浏览文件还原时。

在Internet Exporer 7(IE7),当用户使用上传文件控件浏览文件时,文件的完整路径可以简单地用下面的代码访问:

myFileUpload.FileName

假如我们想要完整地从“c:\myfolder\My_Bakup.BAK”下还原备份文件,我们只要简单地写出以下代码:

RESTORE DATABASEMy Database FROM DISK='c:\myfolder\My_Bakup_BAK'

在IE7下,myFileUpload.FileName返回完整路径,即“c:\myfolder\My_Bakup_BAK”,但在IE8和Mozilla下所选文件真正路径下有着新的安全“功能”。它只返回了文件名(My_Backup_BAK),也就是还原语句变为了:

RESTORE DATABASEMy Database FROM DISK='My_Bakup_BAK'这导致了还原操作的失败。

我们这样解决问题:

当用户选择文件还原时,服务器在C:目录下创建新文件夹“Temp_Restore”,然后拷贝一份到新创建的文件夹下。现在备份文件保存在以下路径下:

C:\Temp_Restore\My_Backup

然后我们在还原页添加隐藏字段。这些隐藏字段保存完整路径,这样问题就解决了。

注意,当系统完成还原操作,自动删除创建的副本。

图片问题

一般情况下,有三种方法将数据插入数据库表中:

手动:通过添加表中的数据。

查询:通过执行一些语句(插入,更新....):

Insert into USERS values(123,'user name 123','pswrd 123')

从一个图形用户界面角度,使用编程技术(.NET,Net Beans....)。如果用户想把图片插入数据库中怎么办呢?在图形用户界面如何做到这一点[14]。

图片在数据库中以字节数组保存。

为了解释这一点,我们创建了一个小的VB.NET Windows应用程序来阐述。

首先,浏览一新图片,然后点击插入。系统将图片变为大的二进制数组(使用.NET内置函数“MemoryStream”),然后十六进制数组被插入表中。

当我们检索图片时,系统做了相反的操作;使用“Drawing”类(.NET中的)将数组转换成图片。

选择了要备份的图片后,每个图片被转换成十六进制数组;数组被保存在XML文件中。

我们遇到的问题是在还原操作中。我们不能使用“插入SQL命令”(这只能由查询分析器来做)以十六进制数组将图片插入数据库。问题的解决方案(我们还没有实现)是将十六进制数组转换成图片保存在一特定目录下,然后把图片插入数据库。这是现有的方案但不是很有效!

免费下载 ×

下载APP,支持永久资源免费下载

下载APP 免费下载
温馨提示
请用电脑打开本网页,即可以免费获取你想要的了。
扫描加我微信 ×

演示

×
登录 ×


下载 ×
论文助手网
论文助手,最开放的学术期刊平台
				暂无来源信息			 
回复
来来来,吐槽点啥吧

作者联系方式

×

向作者索要->