你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
用VB备份和恢复SQL Server数据库的方法(2)
 
 ① 通过第一步创建的ODBC数据源打开要备份的SQL数据库

  ② 使用Attach_Table()将该数据库中的所有用户表链接到backup.mdb中,排除系统表的方法是:

 

For Each tdf in backup_db.TableDefs
 If (tdf.attributes And dbSystemObject)=0 Then
  //条件成立,说明该表是用户定义的表,可以链接,否则跳过
 End if
Next


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

  ④ 将table_name表中的所有记录复制到b_table_name中。

  ⑤从备份库删除对SQL数据表的链接。

3、程序原码

  采用微软DAO (Data Access Object) 数据模型, 打开Access 本地数据库, 并连接一个外部ODBC数据表, 拷贝该表结构完成, 有以下过程块CopyStru :

 

Private Sub copyStru ()
 Set dbsTemp = wrkjet. OpenDatabase (tagFilName)// 链接表的过程
 For i = 0 To tabN - 1
  Set tdfLinked = dbsTemp. CreateTableDef (“linkTab”)
  tdfLinked. Connect = “OdbC; DATABASE = xgsbgsys ; UID =

  sa ; PWD = ; DSN = xgsdb ;”
  tdfLinked. SourceTableName = tabName (i)
  dbsTemp. TableDefs. Append tdfLinked
  Set temp Tab = dbsTemp. CreateTableDef ()
  temp Tab. Name = tabName (i)
  //创建新表的过程
  For Each fld In tdfLinked. Fields
   Set newFil = temp Tab. CreateField (fld. Name , fld. Type ,fld. Size)
   newFil. OrdinalPosition = fld. OrdinalPosition
   newFil. Required = fld. Required
   temp Tab. Fields. Append newFil
  Next
  //创建索引
  For Each idx In tdfLinked. Indexes
   Set newIdx = temp Tab. CreateIndex ()
   With newIdx
    Name = tabName (i) & ” x”
    Fields = idx. Fields
    Unique = idx. Unique
    Primary = idx. Primary
   End With
   temp Tab. Indexes. Append newIdx
  Next
  dbsTemp. TableDefs. Append temp Tab
  Set temp Tab = Nothing
  dbsTemp. TableDefs. Delete ”linkTab”
 Next i
 dbsTemp. Close
 Set dbsTemp = Nothing
 wrkjet. Close
 Set wrkjet = Nothing
End Sub
End Sub

追加数据, 采用微软ADO (ActiveX data object) 数据模型, 分别操纵SQL Server 和Access 数据对象, 追加记录数据来完成, 有以下过程块CopyDa2ta :

 

Private Sub copyData ()
 Set sourceCn = New adodb. Connection
 sourceCn. CursorLocation = adUseServer
 strSql =“PROVIDER = MSDASQL ; dsn = xgsdb ; uid = sa ;
 pwd = ;”
 sourceCn. Open strSql
 Set targetCn = New adodb. Connection
 targetCn. CursorLocation = adUseClient
 targetCn. Open ” PROVIDER = Microsoft. Jet. OL Edb. 3.51 ;
 Data Source = ”& tagFilName &“;”
 End If //追加新表
 For i = 0 To tabN - 1
  Set targetRst = New adodb. Recordset
  strSql = ”select 3 from ”& tabName (i)
  targetRst. Open strSql , targetCn , adOpenStatic , adLockPes2simistic , adCmdText
  Set sourceSet = New adodb. Recordset
  strSql = ”select 3 from ”& tabName (i) & strSQLApp
  sourceSet. Open strSql , sourceCn
  zdN = sourceSet. Fields. Count
  If sourceSet. EOF Then Go To hh
   sourceSet. MoveFirst
   Do While Not sourceSet. EOF
    targetRst. AddNew
    For j = 0 To zdN - 1
     If Trim (sourceSet. Fields (j) . Value) = ””Then
      targetRst. Fields (j) . Value = Null
     Else
       targetRst. Fields (j) . Value = Trim (sourceSet. Fields(j) . Value)
     End If //复制记录
    Next
    targetRst. Update
    sourceSet. MoveNext
   Loop
   recN = targetRst. RecordCount
   hh :sourceSet. Close
   Set sourceSet = Nothing
   targetRst. Close
   Set targetRst = Nothing
  Next
  targetCn. Close
  Set targetCn = Nothing
  sourceCn. Close
  Set sourceCn = Nothing
End Sub //删除链接

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089