直接用SQL语句可以:
dim objConn as new adodb.connection
objConn.open "..." '你的连接
objConn.execute "Use Master" '先连接到Master数据库
objConn.execute "backup database dbname to disk='c:\bak\yymmdd.dat'" 把数据库dnbame备份到c:\bak\yymmdd.dat
objConn.close
set objconn=nothing用SQL DMO也可以,需要先引用SQL DMO对象:
Private WithEvents objBAK As SQLDMO.Backup
Private Sub mnuBackup_Click()
    Dim svr As New SQLDMO.SQLServer
    Dim strFile As String
    
    On Error GoTo ErrorHandler
    
    CommonDialog1.Filter = "备份数据文件(*.Dat)|*.DAT"
    CommonDialog1.InitDir = App.Path & "\BACKUP"
    CommonDialog1.DialogTitle = "备份数据库"
    CommonDialog1.Flags = &H4
    CommonDialog1.ShowSave
    
    If CommonDialog1.FileName = "" Then Exit Sub
    strFile = CommonDialog1.FileName
    
    conn.Execute "USE MASTER"  'adodb.connection,在其它地方已经打开
    
    svr.Connect sSVR, sUID, sPWD '服务器,用户名,密码
    
    Set objBAK = New SQLDMO.Backup
    objBAK.PercentCompleteNotification = 1
    objBAK.Database = sDBS
    objBAK.Files = strFile
    objBAK.SQLBackup svr
    
    conn.Execute "USE " & sDBS
    Set objBAK = Nothing
    svr.Close
    Set svr = Nothing
    Exit SubErrorHandler:
    Screen.MousePointer = 0
    If Err.Number <> 32755 Then 
MsgBox Err.Description, 64
    End If
End Sub
Private Sub objBAK_Complete(ByVal Message As String)
    MsgBox "备份成功!", 64
End Sub
Private Sub objBAK_PercentComplete(ByVal Message As String, ByVal Percent As Long)
    ProgressBar1.Value = Percent
End Sub

解决方案 »

  1.   

    用sqldmo恢复数据的方法:Private WithEvents objRST As SQLDMO.RestorePrivate Sub mnuFileRestore_Click()
        Dim strFile As String
        On Error GoTo ErrorHandler
        
        CommonDialog1.Filter = "备份数据文件(*.Dat)|*.DAT"
        CommonDialog1.InitDir = App.Path & "\BACKUP"
        CommonDialog1.DialogTitle = "恢复数据"
        CommonDialog1.Flags = &H4
        CommonDialog1.ShowOpen
        DoEvents
        If CommonDialog1.FileName = "" Then Exit Sub
        strFile = CommonDialog1.FileName
        
        Screen.MousePointer = 11
        Load frmProgress
        Label1.Caption = "正在准备恢复..."
        DoEvents
        
        conn.Execute "USE MASTER"
        
        Dim svr As New SQLDMO.SQLServer
        svr.Connect sSVR, sUID, sPWD
        
        Label1.Caption = "正在从文件" & LCase(strFile) & "中恢复数据..."
        DoEvents
        Set objRST = New SQLDMO.Restore
        objRST.PercentCompleteNotification = 1
        objRST.Database = "MRP"
        objRST.ReplaceDatabase = True
        objRST.Files = strFile
        objRST.SQLRestore svr
        
        conn.Execute "USE MRP"
        Set objRST = Nothing
        svr.Close
        Set svr = Nothing
        Exit Sub
        
    ErrorHandler:
        If Err.Number <> 32755 Then MsgBox Err.Description, 64
        Screen.MousePointer = 0
    End Sub
    Private Sub objRST_Complete(ByVal Message As String)
        Screen.MousePointer = 0
        MsgBox "恢复数据成功!", 64
    End SubPrivate Sub objRST_PercentComplete(ByVal Message As String, ByVal Percent As Long)
        ProgressBar1.Value = Percent
    End Sub