热情软件屋

 

如何在VB中使用SQL中的BACKUP命令


编号:QA004253
建立日期: 2001年6月12日 最后修改日期:2003年8月15日
所属类别:

贾瑜:
    操作系统: windows
    编程工具: visual basic
    问题:
    如何在VB中使用SQL中的BACKUP命令??我指的是如何在VB中挂这个函数!(例如:使用EXECUTE挂SELECT的,而BACKUP如何使用)
    水平: 中级

回答:

    在VB中使用sql命令备份,我没试过。但SQL中有一个自动功能,可以试一试。
    在数据库上右击,选择All Tasks>>Backup Database>>Schedule....
    
    binny的意见:
    我写的一个比较完整的备份函数,供参考
    '以下是对该函数的详细解释,其中有些函数要靠自己编
    
    Public Function CBNBackupDatabase() As Boolean
     Dim sFile As String
     Dim sSQL As String
     Dim lTimeOut As Long
     Dim adoTempRS As ADODB.Recordset
    
     On Error GoTo ErrLabel
    
     With gDBRecordConn '本连接为ADODB.Recordset类型的连接
    
     '函数gclsInclude.MyGetFileName的功能是得到要备份的程序文件名称,会显示保存画面
     sFile = gclsInclude.MyGetFileName(False, _
     "数据库备份文件 (*.BAK)|*.bak", , _
     gTAppLicInfo.FileDBRestore, _
     "请选择存储的数据库备份文件 ")
     If sFile <> "" Then '如果文件名称和路径合法的话,函数gclsInclude.MyGetFileName会返回一个非空的字符串
     DoEvents '给鼠标足够的时间显示漏斗状态
     Screen.MousePointer = vbHourglass '鼠标显示漏斗为忙的状态
     DoEvents
     gclsCommon.CBNSplashShow '本函数将出现一个画面,显示备份的进度
     gclsCommon.CBNSplashSetMessage "正在备份数据库" '在进度上面显示“正在备份数据库……”的文字动画
     DoEvents '给函数gclsCommon.CBNSplashShow足够的时间显示文字动画
     sSQL = "USE master" '使用master数据库进行工作
     .Execute sSQL '同上
     '看一下当前有那些系统设备在使用 gTAppLicInfo.SoftSQLDBase 数据库,其中,gTAppLicInfo.SoftSQLDBase 数据库是被备份的SQL数据库名称
     Set adoTempRS = gDBRecordConn.Execute("SELECT * FROM sysdevices WHERE name = '" & gTAppLicInfo.SoftSQLDBase & "'")
     If adoTempRS.RecordCount = 0 Then '如果没有人在使用要备份的饿数据库,则建立一个类型为disk的设备,同时开辟一个备份文件名称
     sSQL = "EXEC sp_addumpdevice 'disk', '" & gTAppLicInfo.SoftSQLDBase & "','" & sFile & "'"
     .Execute sSQL
     End If
     '由于备份的时间比较长,因此要将ADO连接gDBRecordConn的命令超时延长,但要先将以前的超时使用变量lTimeOut保存下来
     lTimeOut = gDBRecordConn.CommandTimeout
     '根据需要将超时定为需要的值,这里是500
     .CommandTimeout = 500
     '开始备份数据库……
     sSQL = "BACKUP DATABASE " & gTAppLicInfo.SoftSQLDBase & " TO " & gTAppLicInfo.SoftSQLDBase
     .Execute sSQL
     '备份完毕后将主ADO连接gDBRecordConn还原
     sSQL = "USE " & gTAppLicInfo.SoftSQLDBase
     .Execute sSQL
     '将主ADO连接gDBRecordConn的超时设置还原
     .CommandTimeout = lTimeOut
     '如果没有任何错误,本函数将返回TRUE
     CBNBackupDatabase = True
     End If
     End With
    ErrLabel:
     If Err Then
     MsgBox Error, vbCritical '如果出错,将显示错误
     End If
    ' Resume Next
     gclsCommon.CBNSplashUnload '将显示备份进度的Splash窗口卸载
     gDBRecordConn.CommandTimeout = lTimeOut '还原连接的超时
     Screen.MousePointer = vbNormal '鼠标显示正常
    End Function
    
    

    catzhou的意见:
    execute "sp_aqddumpdevice ..."
    还可以用execute "backup database {databasename} to <backup_file"
    创建一个临时备份文件。
    
    东东的意见:
    最好使用SQLDMO的backup 对象,如何使用请查看Sql server的 book online。不过要懂点 COM。
    
    lisle的意见:
    Dim Svr As New SQLDMO.SQLServer
    Dim DB As SQLDMO.Database
    Dim BK As New SQLDMO.Backup
    Dim DV As New SQLDMO.BackupDevice
    Svr.Connect "(local)", "sa"
    DV.Type = SQLDMODevice_DiskDump
    DV.Name = "pubsbak"
    DV.PhysicalLocation = "c:\mssql7\bakup\pubs.bak"
    On Error Resume Next
    Svr.BackupDevices.Add DV
    On Error GoTo 0
    BK.Database = "pubs"
    BK.Devices = "pubsbak"
    BK.Initialize = True
    BK.SQLBackup Svr
    Svr.BackupDevices.Remove "pubsbak"
    
    相关问题:
    QA001758 "MS SQL Server数据库的恢复"

此问题由Frank Xu回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 数据库, database, query

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio