如果你要恢复DB1中的数据,可以先执行USE MASTER,然后再restore database db1...

解决方案 »

  1.   

    USE MASTER不能在VB里使用.
    你关闭所有连接,然后建立一个到master表的连接,再恢复数据库,
      

  2.   

    你的意思,我做过,
    你的意思是不是
    就是连接上master数据库,再对要恢复的数据库进行恢复对吗
      

  3.   

    我来告诉你 我是这样做的shell "net stop sqlserver"
    PauseTime = 5   ' 设置暂停时间。
       Start = Timer   
       Do While Timer < Start + PauseTime
          DoEvents         
       Loop
    msgbox "!"
    shell "net start sqlserver"然后你再恢复
    重起数据库
      

  4.   

    ******************对不起 写错了******************shell "net stop MSsqlserver /y"
    PauseTime = 5   ' 设置暂停时间。
       Start = Timer   
       Do While Timer < Start + PauseTime
          DoEvents         
       Loop
    msgbox "!"
    shell "net start MSsqlserver"然后你再恢复
      

  5.   

    user master是sql server里的命令语句,表示把当前数据库转为master.
    它不是标准sql语句.
    VB里建立的连接不能用这个命令转换当前连接.只能关闭原来的连接,再建立新的连接.
      

  6.   

    小呆是对的,呵呵,但如程序被阻塞还是会有问题啊。
    不如,直接 net stop 再 net start 。
      

  7.   

    因为不能恢复正在使用的数据库,所以要先使用MASTER数据库;
    如果有在查询分析器中,直接执行USE MASTER即可;
    如果是在VB的程序中:
    dim objConn as new adodb.connection
    objconn.open "..."
    objconn.execute "use master"
    objconn.execute "restore database db1 ..."
      

  8.   

    当然,用秋雨的方法,先关闭所有连接,再直接连到MASTER数据库,然后再执行RESTORE操作也是可以的,只是需要更改连接字符串。
      

  9.   

    objconn.execute "use master"
    可以执行吗?
      

  10.   

    Sql Server 2000 恢复我是做在服务器上,那样就不用那么麻烦了
    Private Sub cmdRestore_Click()
        On Error GoTo ErrHandler:
        Dim oRestore As SQLDMO.Restore
        
        Dim Msg As String
        Dim Response As String    txtStatus.Text = ""
        gDatabaseName = cmbDatabaseName.Text
        Set oRestore = New SQLDMO.Restore
        Set oRestoreEvent = oRestore        ' enable events
        oRestore.Database = gDatabaseName
        gBkupRstrFileName = txtDataFileName.Text
        oRestore.Files = gBkupRstrFileName
        
        Screen.MousePointer = vbHourglass
        
        '恢复数据库.
        oRestore.SQLRestore gSQLServer
        
        Screen.MousePointer = vbDefault
       
        Set oRestoreEvent = Nothing         ' disable events
        Set oRestore = Nothing
        Exit SubErrHandler:
        txtStatus.Text = ""
        PrintStat "错误信息:" + vbCrLf & "    " & Err.Description + vbCrLf & "    请检查您所输入的路径及名称是否正确?在进行数据库恢复时,其它计算机是不能使用该数据库的,请确认后重试!"
        MsgBox "错误信息 " & Err.Description, , gTitle
        Resume Next
    End Sub
      

  11.   

    to 秋雨:
    objconn.execute "use master" 可以执行的,你可以试一下
      

  12.   

    if cnn.state = 1 then
       cnn.close
    endif
      

  13.   

    我知道可以执行, 但是VB的当前连接改了吗?还是连接着原来的数据库,没有转到master。我前一段时间写数据库时试过的。
      

  14.   

    这样做即可:假设已打开了连接到jdxt数据库上,然后再程序中要恢复数据库jdxtdim adocommand As New ADODB.Command
    With adocommand
         .ActiveConnection = adoconnection
         .CommandType = adCmdText
         .CommandText = "use master"  '或其它的数据库
         .Execute
    End WithWith adocommand
         .ActiveConnection = adoconnection
         .CommandType = adCmdText
         .CommandText = "use master"  '或其它的数据库
         .Execute
    End WithWith adocommand
         .ActiveConnection = adoconnection
         .CommandType = adCmdText
         .CommandText = "restore database jdxt from disk='数据库路径和名称'
         .Execute
    End WithWith adocommand
         .ActiveConnection = adoconnection
         .CommandType = adCmdText
         .CommandText = "use jdxt"  
         .Execute
    End With这样就行了,可以不必在VB里面重新定义连接
      

  15.   

    补充:对不起,上面的第二个with adocommand是多余的,与第一个一样,属于手误。可以删除