问题描述:
    我已经对一个名为“balance”的数据库进行了备份(备份名称balance.bak)。现在用下面的sql脚本在查询分析其中进行恢复:
RESTORE DATABASE balance from DISK='..\balance.bak'
恢复成功。
    但是当我在vb中使用connection对象恢复时,代码如下:
    'conn是connection对象,并以连接balance数据库
    conn.Excute "RESTORE DATABASE balance from DISK='..\balance.bak'"
每次执行上条语句时总是发生错误:
    “数据库正在被使用,无法获得对数据库的排它访问权限。”请问应如何解决这一问题呢?谢谢。

解决方案 »

  1.   

    看看你的初始化连接字符串有否连接balance数据库的
      

  2.   

    Restore_data.ActiveConnection = conn_Str
    Restore_data.CommandType = adCmdTextRestore_data.CommandText = "restore database balance  from disk= '" & Dir1.Path + "\balance.bak'"Restore_data.Execute
    MsgBox "恢复数据成功!"
      

  3.   

    如果你是在连接sql server的状态下恢复数据库,要先
    AdoCon.DefaultDatabase = "master" '将当前默认数据库改为master,以免恢复时发生冲突
    再restore,恢复完成后用会原数据库
      

  4.   

    用sqldmo操作
    Public Function RestoreDatabase(Database As String, FileName As String) As Boolean
    '恢复数据库
    On Error GoTo er
    If mState <> 1 Then Exit Function
    Dim oRestore As Object
    Set oRestore = CreateObject("SQLDMO.Restore")
    oRestore.Database = Database
    oRestore.Files = FileName
    oRestore.ReplaceDatabase = True
    If Len(Dir(FileName)) > 0 Then
            Kill (FileName)
    End If
    oRestore.SQLRestore sql
    er:
    RestoreDatabase = IIf(Err.Number = 0, True, False)
    End Function
      

  5.   

    感谢诸位高手。
    特别感谢itxxx。
    问题解决后,怎么给各位加分?