关于我们 广告服务 社区论坛
设为首页 加入收藏

行业新闻
服 务 器
模版下载
建站指南
冲浪宝典
办公软件
网站运营
操作系统
QQ 专题
网页制作
安全防御
视频教程
网络编程
SEO专区
软件下载
图像设计
Cisco
网页特效
Wap 技术
联盟赚钱
网页素材
 首页 | 企业建站 | 网页制作 | 网站运营 | 网络编程 | 图像设计 | 冲浪宝典 | 操作系统 | SEO专区 | 联盟赚钱 | Cisco

欢迎来到e天下网络首页>>网络编程>>SQL Server>>正文|一种便宜的SQL Server数据库备份机制

一种便宜的SQL Server数据库备份机制

[ 来路:21kn.com    时间:2007-7-8 18:53:33    点击: ]

 

---- 现在很多企业都使用MS Windows NT为平台,SQL Server为后台数据库构建企业内部的Intranet,该成熟技术的普及,能有效地帮助企业对内部数据进行管理。在此应用中,对数据库的备份是很重要的一项工作。在大型单位,往往是采用双机备份机制,即在同一个NT域使用两台服务器,一个是主域控制器,另一个是备份域控制器,两台服务器上都有SQL Server,在程序的运行过程中,不断的将主域控制器中的SQL数据库新数据更新到备份域控制器的SQL数据库中。这种方案的缺点是,设备代价昂贵,不适合小型企业。对小型企业来说,添置一台备份服务器或增设一名能对NT系统进行全方面管理的人并由他定期使用SQL Server中的备份功能进行数据备份往往开销过大。那么,有没有更便宜的备份方案呢?答案是:有。这里,介绍一种用Visual Basic 5.0 开发的备份程序,将SQL数据库加密备份到Access数据库中的方法。该程序还能用Access备份库的数据恢复SQL数据库,从而减少因误操作而损坏数据内容而造成的损失。使用该方法,用户不须添加额外设备,只须运行该备份程序,其界面简单方便,适合无专业知识的一般用户使用。 

---- 开发所需软件:VB 5.0,Access 97 

---- 备份程序的设计方法: 

---- 一.用控制面版的ODBC设置,给SQL Server中的数据库添加一个数据源名称。 

---- 二.在Access中新建一个数据库,命名为backup.mdb。 

---- 三.用VB定义两个主要过程:Attach_Table() 和Create_Table() 。 

---- Attach_Table的作用是将SQL Server数据库中的所有需要备份的表链接到Access数据库中,(注意不是拷贝,链接仅提供对该表的临时访问,其效率要远远高于拷贝)。在此过程中要排除系统表,因为那是SQL Server自创建的,里面无用户数据。Create_Table的作用是在backup.mdb中创建目的表,即创建在这个备份Access库中的表用来保存所有存与SQL中的用户数据。另外,在链接过程中,要去掉SQL Server自带的拥有者名称(是隐含的,用户看不见),还定义了一个过程StripOwner()。 

---- 四.程序的逻辑结构: 

通过第一步创建的ODBC数据源打开要备份的SQL数据库 

使用Attach_Table() 将该数据库中的所有用户表链接到backup.mdb中 

使用Create_Table() 对每个表创建与之对应的备份表,取名可遵循如下原则,若原表叫table_name,则备份表叫b_table_name。 

将table_name表中的所有记录添加到b_table_name中。 

删除对SQL数据表的链接。 
---- 五.程序原码如下: 
//链接表的过程:a是表名,b是SQL数据库连接字符串。
例如:b= "odbc;uid=sa;pwd=;dsn=thcg;database=thcw_cg"
      a="danwei" 
Private Function AttachTable
(a As String, b As String) As Boolean
   Dim td As TableDef
   Dim i
   
   On Error GoTo e:
   '先判断里头是否已有表
   For i = 0 To backup_db.TableDefs.count - 1
     If backup_db.TableDefs(i).name = a Then
        AttachTable = True
        Exit Function
     End If
   Next i
   Set td = backup_db.CreateTableDef(a)
   td.Connect = b
   td.SourceTableName = a
   backup_db.TableDefs.Append td
   AttachTable = True
   Exit Function
e:
  MsgBox Err.Description, vbInformation, p_title
  AttachTable = False
  Exit Function
End Function
//创建新表的过程
Private Sub Create_Table(a As String)  '
在Access库中创建欲备份的目的表:b_xxxx
  Dim i
  Dim tblTableDefObj As TableDef
  Dim fldFieldObj As Field
  Dim indIndexObj As Index
  Dim tdf As TableDef
  Dim fld As Field
  Dim idx As Index
  Dim str As String
  Dim source As String
   
   '创建表
   Set tblTableDefObj = backup_db.CreateTableDef()
   str = Trim(a)
   source = Mid(str, 3)
   tblTableDefObj.name = StripOwner(str)
   '创建字段
   For i = 0 To backup_db.TableDefs(source).
Fields.count - 1
    Set fld = backup_db.TableDefs(source).Fields(i)
Set fldFieldObj = backup_db.TableDefs
(source).CreateField(fld.name, fld.Type, fld.Size)
    tblTableDefObj.Fields.Append fldFieldObj
   Next

  '追加新表
  backup_db.TableDefs.Append tblTableDefObj

End Sub
//去除隐含名称的过程
SQL给表加的隐含拥有者一般为"dbo."
并加在头部,这里用"."来截取拥有者字符串。 
Function StripOwner(rsTblName As String) As String

  If InStr(rsTblName, ".")  > 0 Then
rsTblName = Mid(rsTblName, InStr(rsTblName, ".") 
+ 1, Len(rsTblName))
  End If
  StripOwner = rsTblName

End Function

由于拷贝记录是VB对数据库的常规操作,这里不再赘述。 
---- 如果要从Access数据库中将数据恢复到SQL Server中,方法类似,仅仅是拷贝记录的方向反一下,从Access表往链接过来的SQL表中拷贝。 

::::站长友情提示:多花一分钟学点什么都好::::

 

上一篇:SQL语法参考手册  下一篇:NT Server4.0 用 作 LAN/LAN 路 由 器

 ::热点信息::

 

= = 免责声明 = =

① 欢迎转载我网所刊信息,请注明“来源:E天下网络”。
② 凡本网注明“来源:XXX(非E天下网络)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。
※联系方式:Airtofly@163.com

::推荐文章::

 

ASP教程:详细学习ASP的内置对象

::图像设计::

 

动态图片搜索家——GIF RUNN
软件搜索利器——FileFerret
实例说明构图要讲规律
Character Builder让你尽展靓
全景图速成者Cool360
三维模型速成工具——Canoma
剪贴专家SmartBoard 32
新世纪的图像处理利器——Ph
更多内容..

 

 

关于我们 广告服务 友情链接 合作伙伴 社区论坛 免责声明

Copyright © 2007   21kn.com Inc. All rights reserved.e天下网络工作室

网站白天客服QQ:26875416 (非24小时)  合作QQ:597004688    粤ICP备06026423号