VB实现SQL Server数据库备份/恢复(原作:zjcxc(邹建))

转载 2004年07月28日 14:20:00

'*************************************************************************
'**模 块 名:fBackupDatabase_a
'**描    述:备份数据库,返回出错信息,正常恢复,返回""
'**调    用:fBackupDatabase_a "备份文件名","数据库名"
'**参数说明:
'**          sBackUpfileName  恢复后的数据库存放目录
'**          sDataBaseName    备份的数据名
'**          sIsAddBackup     是否追加到备份文件中
'**说    明:引用Microsoft ActiveX Data Objects 2.x Library
'**创 建 人:邹建
'**日    期:2003年12月09日
'*************************************************************************
Public Function fBackupDatabase_a(ByVal sBackUpfileName$ _
                                , ByVal sDataBaseName$ _
                                , Optional ByVal sIsAddBackup As Boolean = False _
                                ) As String
                               
    Dim iDb As ADODB.Connection
    Dim iConcStr$, iSql$, iReturn$
   
    On Error GoTo lbErr
   
    '创建对象
    Set iDb = New ADODB.Connection
   
    '连接数据库服务器,根据你的情况修改连接字符串
    iConcStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=zj"
    iDb.Open iConcStr
   
    '生成数据库备份语句
    iSql = "backup database [" & sDataBaseName & "]" & vbCrLf & _
            "to disk='" & sBackUpfileName & "'" & vbCrLf & _
            "with description='" & "zj-backup at:" & Date & "(" & Time & ")'" & vbCrLf & _
            IIf(sIsAddBackup, "", ",init")
           
    iDb.Execute iSql
    GoTo lbExit
   
lbErr:
    iReturn = Error
lbExit:
    fBackupDatabase_a = iReturn
End Function

'*************************************************************************
'**模 块 名:frestoredatabase_a
'**描    述:恢复数据库,返回出错信息,正常恢复,返回""
'**调    用:frestoredatabase_a "备份文件名","数据库名"
'**参数说明:
'**          sDataBasePath  恢复后的数据库存放目录
'**          sBackupNumber  是从那个备份号恢复
'**          sReplaceExist  指定是否覆盖已经存在的数据
'**说    明:引用Microsoft ActiveX Data Objects 2.x Library
'**创 建 人:邹建
'**日    期:2003年12月09日
'*************************************************************************
Public Function fRestoreDatabase_a(ByVal sBackUpfileName$ _
                                , ByVal sDataBaseName$ _
                                , Optional ByVal sDataBasePath$ = "" _
                                , Optional ByVal sBackupNumber& = 1 _
                                , Optional ByVal sReplaceExist As Boolean = False _
                                ) As String
   
    Dim iDb As ADODB.Connection, iRe As ADODB.Recordset
    Dim iConcStr$, iSql$, iReturn$, iI&
   
    On Error GoTo lbErr
   
    '创建对象
    Set iDb = New ADODB.Connection
    Set iRe = New ADODB.Recordset
   
    '连接数据库服务器,根据你的情况修改连接字符串
    iConcStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=zj"
    iDb.Open iConcStr
   
    '得到还原后的数据库存放目录,如果没有指定,存放到SQL SERVER的DATA目录
    If sDataBasePath = "" Then
        iSql = "select filename from master..sysfiles"
        iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
        iSql = iRe(0)
        iRe.Close
        sDataBasePath = Left(iSql, InStrRev(iSql, "/"))
    End If
   
    '检查数据库是否存在
    If sReplaceExist = False Then
        iSql = "select 1 from master..sysdatabases  where name='" & sDataBaseName & "'"
        iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
        If iRe.EOF = False Then
            iReturn = "数据库已经存在!"
            iRe.Close
            GoTo lbExit
        End If
        iRe.Close
    End If
   
    '关闭用户进程,防止其它用户正在使用数据库,导致数据恢复失败
    iSql = "select spid from master..sysprocesses where dbid=db_id('" & sDataBaseName & "')"
    iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
    While iRe.EOF = False
        iSql = "kill " & iRe(0)
        iDb.Execute iSql
        iRe.MoveNext
    Wend
    iRe.Close
   
    '获取数据库恢复信息
    iSql = "restore filelistonly from disk='" & sBackUpfileName & "'" & vbCrLf & _
        "with file=" & sBackupNumber
    iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
   
    '生成数据库恢复语句
    iSql = "restore database [" & sDataBaseName & "]" & vbCrLf & _
        "from disk='" & sBackUpfileName & "'" & vbCrLf & _
        "with file=" & sBackupNumber & vbCrLf
    With iRe
        While Not .EOF
            iReturn = iRe("PhysicalName")
            iI = InStrRev(iReturn, ".")
            iReturn = IIf(iI = 0, "", Mid(iReturn, iI)) & "'"
            iSql = iSql & ",move '" & iRe("LogicalName") & _
                    "' to '" & sDataBasePath & sDataBaseName & iReturn & vbCrLf
            .MoveNext
        Wend
        .Close
    End With
    iSql = iSql & IIf(sReplaceExist, ",replace", "")
   
    iDb.Execute iSql
    iReturn = ""
    GoTo lbExit
   
lbErr:
    iReturn = Error
lbExit:
    fRestoreDatabase_a = iReturn
End Function

通过ADSI管理 Internet Information Server

 通过ADSI管理 Internet Information Server邓振波  活动目录是集成在Windows2000的目录服务。活动目录类似数据库。用户可以向活动目录添加或者清除项目,并且在大多...
  • seesi
  • seesi
  • 2002-03-27 08:48:00
  • 799

VB如何远程备份sqlserver数据库到本地机中

方法:(1)将数据备份在远程的服务器中。(2)远程共享某个目录(3)将远程数据备份文件拷贝到本地机中(4)清除远程共享的目录这里主要用到的是sqlserver中内部的函1.清除老的c:/temp2的文...
  • dazui
  • dazui
  • 2007-01-01 21:54:00
  • 2442

SQL数据库备份与还原VB源代码

  • 2009年01月06日 21:19
  • 2MB
  • 下载

VB备份与还原SQL数据库代码

Private Sub mnuDBBackUp_Click() '------------------备份数据库 Dim cnbak As New ADODB.Connection If cnba...
  • cncco
  • cncco
  • 2011-01-15 23:19:00
  • 1438

数据库备份与还原(VB代码示例)

一、数据备份    备份有两中形式完全备份和差异备份    完全备份:是对数据库进行完整备份,周期比较长,如1周等    差异备份:是对更新备份的数据进行备份,周期比较短,如1小时    命令介绍: ...
  • hackwolf2007
  • hackwolf2007
  • 2007-06-09 15:13:00
  • 1266

VB实现SQL Server数据库备份/恢复

’**模 块 名:fBackupDatabase_a’**描    述:备份数据库,返回出错信息,正常恢复,返回""’**调    用:fBackupDatabase_a "备份文件名","数据库名"...
  • cncco
  • cncco
  • 2006-05-15 12:53:00
  • 1570

数据库 <em>vb+sql</em>

数据库<em>备份</em>,压缩,恢复,软件空间占用 5.姓名,像片...25175学生报名管理系统v<em>2008</em> build1212 调试操作系统:...<em>VB+SQL</em> 电子商城(附数据库 源代码) 立即下载 上传...
  • 2018年04月06日 00:00

<em>sql</em> server 数据库的<em>备份</em>与恢复1

<em>VB</em>编写<em>SQL</em>数据<em>备份</em>与恢复 立即下载 上传者: ben<em>2008</em>china 时间: 2010-12-10 综合评分: 4 积分/C币:3 delphi中如何实现<em>SQL</em> Server数据库的<em>备份</em>与恢复的源代...
  • 2018年04月08日 00:00

用VB备份和还原SQL Server数据库

我们在开发企业管理系统中,常会遇到这样和那样的问题,其中比较多的是数据库的备份和还原。我们总不能让用户自己操作数据库来进行备份,一是安全问题,二是这个是对用户的不合理要求(想不到更好的词)。下面以VB...
  • hackwolf2007
  • hackwolf2007
  • 2007-06-09 15:00:00
  • 906

用VB备份和恢复SQL Server数据库的方法

  摘要 备份与恢复是数据库管理员维护数据库安全性和完整性的重要操作。本文分析并介绍用Access备份SQL数据库的方法,很好地达到了数据备份的目的。同时,就Access 数据库的安全接口作了简略讨论...
  • jevylau
  • jevylau
  • 2007-02-25 10:31:00
  • 660
收藏助手
不良信息举报
您举报文章:VB实现SQL Server数据库备份/恢复(原作:zjcxc(邹建))
举报原因:
原因补充:

(最多只允许输入30个字)