数据库还原

发表于:2007-07-01来源:作者:点击数: 标签:
数据库还原 引用 sql dmo object library Dim g SQL Server As SQLDMO.SQLServer On Error GoTo ErrHandler: If gSQLServer Is Nothing Then Set gSQLServer = New SQLDMO.SQLServer End If gSQLServer.LoginTimeout = 15 frmSelectServer.Show 1 If frmSele

数据库还原

´引用sqldmo object library
Dim gSQLServer As SQLDMO.SQLServer
On Error GoTo ErrHandler:
    If gSQLServer Is Nothing Then
        Set gSQLServer = New SQLDMO.SQLServer
    End If
    gSQLServer.LoginTimeout = 15
    frmSelectServer.Show 1
    If frmSelectServer.connecString = "" Then Exit Sub
    gSQLServer.Connect frmSelectServer.connecString, "sa", "sa"
    Dim oRestore As SQLDMO.Restore
    Dim Msg As String
    Dim Response As String
    Set oRestore = New SQLDMO.Restore
    oRestore.DATABASE = "data"
     CommonDialog1.CancelError = True
   On Error GoTo Errhandler1
   ´ 设置标志
   CommonDialog1.Flags = cdlOFNHideReadOnly
   ´ 设置过滤器
   CommonDialog1.Filter = "All Files (data*.*)|data*.*"
   ´ 指定缺省的过滤器
   CommonDialog1.FilterIndex = 2
   ´ 显示“打开”对话框
   ´
   Dim riqi As String
   CommonDialog1.FileName = riqi
   CommonDialog1.ShowOpen
   ´ 显示选定文件的名字
   riqi = CommonDialog1.FileName
   
    oRestore.Files = riqi
  ´当连接的时候,鼠标变化
    Screen.MousePointer = vbHourglass
    ´恢复前断开所有的数据库连接
    Dim iDb As ADODB.Connection, iRe As ADODB.Recordset
    Set iDb = New ADODB.Connection
    Set iRe = New ADODB.Recordset
    Dim iConcStr As String
     ´连接数据库服务器
    iConcStr = "Provider=sqloledb;" & _
           "Data Source=myServerName;" & _
           "Initial Catalog=master;" & _
           "User Id=myUsername;" & _
           "Password=myPassword"
    iDb.Open iConcStr
    Dim iSql As String
    iSql = "select spid from master..sysprocesses where dbid=db_id(´data´)"
    iRe.Open iSql, iDb, adOpenKeyset, adLockReadOnly
    frmMoive.Label1.Caption = "数据库在还原过程中,请等候。"
    frmMoive.Caption = "数据库恢复"
    frmMoive.Show vbModeless, Me
    DoEvents
    Me.Enabled = False
       Dim Spath As String
    If Right(App.Path, 1) <> "\" Then
        Spath = App.Path & "\"
    Else
        Spath = App.Path
    End If
    frmMoive.Animation1.Open Spath & "working.avi"
    frmMoive.Animation1.Play
    While iRe.EOF = False
        iSql = "kill " & iRe(0)
        iDb.Execute iSql
        iRe.MoveNext
    Wend
    iRe.Close
    iDb.Close
    ´恢复数据库
    oRestore.SQLRestore gSQLServer
    ´恢复后鼠标返回默认的状态
    Me.Enabled = True
    frmMoive.Animation1.Stop
    Unload frmMoive
    Set oRestore = Nothing
    Screen.MousePointer = vbDefault
    MsgBox "数据库还原成功!"
   
    Exit Sub

ErrHandler:
    MsgBox "Error " & Err.Description
    Exit Sub
Errhandler1:
       ´ 用户按了“取消”按钮
   Exit Sub


原文转自:http://www.ltesting.net