RESTORE DATABASE异常终止

时间:2016-09-19 15:04:08

标签: sql-server vb.net restore

我设法编写了一个允许我备份SQL Server数据库的功能,但我正在努力尝试恢复和使用备份版本。

我的代码:

    Try
        Dim confirmBackUp As MsgBoxResult
        confirmBackUp = MsgBox("Are you sure you want to restore?")

        If confirmBackUp = MsgBoxResult.Yes Then  Else Exit Sub
        Dim cmd As New OleDbCommand
        con = New OleDbConnection()

             ' con.Connectionstring is read from an .ini file, but the string is correct

        con.Open()
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "RESTORE DATABASE MaintenanceControl FROM DISK='c:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Backup\MaintenanceControl.bak'"
        cmd.Connection = con
        cmd.ExecuteNonQuery()

        MsgBox("Database Restored", MsgBoxStyle.OkOnly, "Success")
        con.Close()

    Catch ex As Exception
        errorLog(ex.Message, ex.StackTrace)
        MsgBox("Could not restore database, refer to error log")

    End Try

但在.ExecuteNonQuery()行,我收到以下错误;

  

RESTORE DATABASE正在异常终止。

     

RESTORE无法处理数据库' MaintenanceControl'因为它在本次会议中使用。建议在执行此操作时使用master数据库。

问题是什么?是因为con也是实时数据库连接的名称,它不应该被赋予新的字符串吗?

修改

我现在将连接的Initial Catalog部分设置为' Master',并在con = New OleDbconnection之前添加了con.Close()但是我现在的错误得到了

  

RESTORE DATABASE异常终止。   由于数据库正在使用,因此无法获得独占访问权。

1 个答案:

答案 0 :(得分:0)

如果您可以删除并重新创建数据库,则可以使用此语句,这样您就可以删除它:

alter database MaintenanceControl set single_user with rollback immediate; 
drop database SomeDatMaintenanceControl base;

然后根据需要从头开始创建数据库。

删除数据库会破坏数据库,以便在您尝试恢复时不会有人连接到该数据库。然后你干净地创建数据库。