肯定是有人通过SQL Query Analyzer或别的在访问数据库!如果想强行恢复,就先把网络连接断开,关掉本地SQL的Query Analyzer,再恢复即可!

解决方案 »

  1.   

    我自己做的!给你参考,不懂再问!
    Private Sub Command9_Click()
    On Error GoTo OYKRet
    Dim MDbConn As ADODB.Connection '---设置ADODB Connection
    Dim Ret As ADODB.Recordset
    If (Trim$(Combo1.Text) = "" Or Trim$(Combo2.Text) = "") Then
        MsgBox "您还没有数据库名称与单位名称。", , "警告信息"
    Else
        Dim response, msg, style, title As String
        style = "是否恢复此数据库?恢复后现在所有数据将丢失!"
        msg = vbYesNo + vbQuestion + vbDefaultButton1
        title = "严重警告信息!"
        response = MsgBox(style, msg, title)
        If response = vbYes Then
            Dim Path As String
            Dialog1.Action = 1
            Path = Dialog1.FileName
            If Path <> "" Then
                Label13.Caption = "正在恢复数据库..............."
                Set MDbConn = New ADODB.Connection
                MDbConn.Open "Provider=SQLOLEDB.1;Password='" & MPassWD & "';Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source='" & MServer & "'"
                MDbConn.CursorLocation = adUseClient
                s = "use [master]"
                Set Ret = New ADODB.Recordset
                    With Ret
                        .ActiveConnection = MDbConn
                        .CursorType = adOpenDynamic
                        .LockType = adLockOptimistic
                        .Source = s
                        .Open
                    End With
                s = "select DISTINCT physical_name,logical_name, file_type from msdb..backupfile where backup_set_id in (6)"
                Set Ret = New ADODB.Recordset
                    With Ret
                        .ActiveConnection = MDbConn
                        .CursorType = adOpenDynamic
                        .LockType = adLockOptimistic
                        .Source = s
                        .Open
                    End With
                s = "set noexec off set parseonly off"
                Set Ret = New ADODB.Recordset
                    With Ret
                        .ActiveConnection = MDbConn
                        .CursorType = adOpenDynamic
                        .LockType = adLockOptimistic
                        .Source = s
                        .Open
                    End With
                s = "RESTORE DATABASE [" & Trim$(Combo1.Text) & "] FROM  DISK = N'" & Path & "' WITH  FILE = 1,  NOUNLOAD ,  STATS = 10,  RECOVERY"
                Set Ret = New ADODB.Recordset
                    With Ret
                        .ActiveConnection = MDbConn
                        .CursorType = adOpenDynamic
                        .LockType = adLockOptimistic
                        .Source = s
                        .Open
                    End With
                s = "select name, DATABASEPROPERTY(name, N'IsDetached'), DATABASEPROPERTY(name, N'IsShutdown'), DATABASEPROPERTY(name, N'IsSuspect'), DATABASEPROPERTY(name, N'IsOffline'), DATABASEPROPERTY(name, N'IsInLoad'), DATABASEPROPERTY(name, N'IsInRecovery'), DATABASEPROPERTY(name, N'IsNotRecovered'), DATABASEPROPERTY(name, N'IsEmergencyMode'), DATABASEPROPERTY(name, N'IsInStandBy'), status, category, status2 from master..sysdatabases"
                Set Ret = New ADODB.Recordset
                    With Ret
                        .ActiveConnection = MDbConn
                        .CursorType = adOpenDynamic
                        .LockType = adLockOptimistic
                        .Source = s
                        .Open
                    End With
                Combo1.Text = Combo1.List(0)
                Combo2.Text = Combo2.List(0)
                Set Ret = Nothing
        
                MsgBox "数据库恢复成功", , "后台管理工具"
                Label13.Caption = ""
            End If
        End If
    End If
    Exit Sub
    OYKRet:
        MsgBox "数据库恢复没有成功" & Chr(13) & Err.Number & Err.Description, , "后台管理工具"
        Label13.Caption = ""
    End Sub
      ‖天天写程序‖
      ‖夜夜泡小妞‖
    ‖身兼数职做代码‖
    ‖晚晚工作到天明‖
    ‖为何人生如此苦‖
    ‖泡妞消费数目高‖
    ‖我看世俗本无趣‖
    ‖程序伤神妞伤人‖
      ‖不再见女人‖
      ‖不想写程序‖
      

  2.   

    是你自己占用
    先打开别的数据库,如master
    use master
    restore database db from ...