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

SQL Server 2008数据库创建,备份,还原图解及注意点

SQL Server 2008数据库创建,备份,还原图解及注意点 一、新建数据库 步骤1:点击“新建数据库”。 步骤2:输入数据库名称,设置数据库文件保存位置(注意点:最好自己设置数...
  • haiross
  • haiross
  • 2014年06月30日 11:22
  • 17907

SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

转自http://blog.csdn.net/dba_huangzj/article/details/8491327 原文出处:http://blog.csdn.net/dba_huangz...
  • peng_bin1989
  • peng_bin1989
  • 2016年07月19日 10:56
  • 846

存储过程备份和还原sqlserver

数据库列表:帐套数据库与系统数据库列表。 备份文件列表:数据源来自master.dbo.sys_BackupHistory表。 首先在master数据库建立3个存储过程及一个备份历史表...
  • sgpian
  • sgpian
  • 2016年08月02日 18:55
  • 1912

SQL server 2008数据库的备份与还原

一、SQL数据库的备份: 1、依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studio → 数据库:Ds...
  • zhangfuliang123
  • zhangfuliang123
  • 2016年06月02日 15:55
  • 3463

SQL数据库有关备份和恢复的语句及操作

备份的代码如下: //开始备份 with adoquery1 do begin close; sql.Clea...
  • KH717586350
  • KH717586350
  • 2015年12月23日 21:42
  • 1952

SQL Server 的备份与恢复

备份的三种形式:日志备份,差异备份,全备份
  • wujiandao
  • wujiandao
  • 2016年06月23日 22:19
  • 2417

SQL Server 2008数据库创建,备份,还原图解及注意点

一、新建数据库 步骤1:点击“新建数据库”。 步骤2:输入数据库名称,设置数据库文件保存位置(注意点:最好自己设置数据库文件保存位置,不要采用安装时默认的文件保存位置!),点击“确认”即可完成...
  • tiana0
  • tiana0
  • 2013年10月12日 16:32
  • 11656

SQL数据库的分离附加,导出脚本,备份和还原

一、数据库的分离 方法一:1、打开对象资源管理器,右击要分离的数据库,选择任务,分离 2、分离之前还要注意保证该分离的数据库没有当前活动的表,否则会报错,像下面这个。如果关闭了活动表还有的话就...
  • IstarI
  • IstarI
  • 2015年08月16日 16:17
  • 2149

阿里云RDS SQL Server 2008 R2 使用本地SQL备份文件还原全过程

最近公司准备全面转向阿里云,写了好几个方案,最终决定购买一台ECS和一台RDS搭配使用。开始对阿里的RDS产品陌生,加上公司的数据库文件近20G,诸多担心,生怕产品买来了不能用,给公司造成损失。后来联...
  • YourBer
  • YourBer
  • 2017年11月15日 11:01
  • 254

SQL server 2008R2 数据库备份和还原

先说点题外话  第一篇博客有点小激动 。由于时间关系决定先写一个比较简单的数据库备份和还原。当初还是菜鸟的时候被实验室老师学长扔在一边,全靠自己琢磨,当时强大的网民群体真心帮了不少忙。所以临近毕业,也...
  • cherish_CX
  • cherish_CX
  • 2016年10月09日 22:49
  • 3612
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB实现SQL Server数据库备份/恢复(原作:zjcxc(邹建))
举报原因:
原因补充:

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