我用VB+SQL写的程序我怎么在程序运行中备份及还原数据库呢??谢谢!!

解决方案 »

  1.   

    用SQLDMO或SQL语句(Backup Database)都可以
      

  2.   

    备份:
    '引用ADO
    Private Sub Command1_Click()
        Dim backUpFileName As String
        With CommonDialog1
            .DialogTitle = "保存的文件名"
            .Filter = "*.SQL|*.SQL"
            .InitDir = App.Path
            .ShowSave
            backUpFileName = CommonDialog1.FileName
        End With    Dim cn As New ADODB.Connection
        cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登录名;Password=密码;Initial Catalog=数据库;Data Source=Sql服务器别名"
        cn.CursorLocation = adUseClient
        cn.Open
        cn.Execute ("backup database 数据库 to disk='" & backupdilename & "'")
    End Sub
    '-------------------------------
    恢复:
    Private Sub Command2_Click()
        Dim backUpFileName As String
        With CommonDialog1
            .DialogTitle = "保存的文件名"
            .Filter = "*.SQL|*.SQL"
            .InitDir = App.Path
            .ShowSave
            If Dir(CommonDialog1.FileName) <> "" Then
                backUpFileName = CommonDialog1.FileName
            Else
                MsgBox "文件不存在!"
                Exit Sub
            End If
        End With
        
        Dim cn As ADODB.Connection, rs As New ADODB.Recordset
        cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=登录名;Password=密码;Initial Catalog=master;Data Source=Sql服务器别名" '借助master数据库来恢复
        cn.CursorLocation = adUseClient
        cn.Open
        rs.Open "select spid from sysprocesses where dbid=db_id('你的数据库名)", cn
        Do While Not rs.EOF
          cn.Execute "kill  " & rs("spid")   '杀掉sql服务器的所有连接,否则会出现:数据库正在使用,无法完成排它操作等等,很重要
          rs.MoveNext
        Loop
        cn.Execute ("restore database 数据库名 from disk='" & backUpFileName & "' with replace")
    End Sub
      

  3.   

    也可以用SQL自动备份功能来实现:
    打开“企业管理器”,右键盘点你的数据库,点“所有任务”里的“维护计划”,按照向导来做就成了,可以定时备份,删除早于某时间的数据。
      

  4.   

    可以用SQL中的"企业管理器"中,"导出导入数据"进行备分数据库
    也可以直接使用"导出导入数据"进行备分数据库
      

  5.   

    我用faysky2() 方法做,可以备份
    但是却无法恢复,vb中提示runtime error91的错误
    在查询分析其中运行restore database pinfo from disk='d:/backup.sql' with replace
    出现以下错误,不知道为什么
    服务器: 消息 3201,级别 16,状态 2,行 1
    无法打开备份设备 'd:/backup.sql'。设备出现错误或设备脱机。详细信息请参阅 SQL Server 错误日志。
    服务器: 消息 3013,级别 16,状态 1,行 1
    RESTORE DATABASE 操作异常终止。
      

  6.   

    to aifox 是路径没写对吧:'d:/backup.sql'  'd:\backup.sql'
    /和\是不一样的