Es ist mir gelungen, eine Funktion zu schreiben, die es mir ermöglicht, eine SQL Server-Datenbank zu sichern, aber ich habe Probleme mit der Wiederherstellung und Verwendung der gesicherten Version.RESTORE DATABASE wird abnormal beendet
Mein Code:
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
Aber auf der .ExecuteNonQuery()
Linie, erhalte ich die folgende Fehlermeldung;
RESTORE DATABASE wird abnormal beendet.
RESTORE kann die Datenbank 'MaintenanceControl' nicht verarbeiten, da sie von dieser Sitzung verwendet wird. Es wird empfohlen, dass die master-Datenbank beim Ausführen dieser Operation verwendet wird.
Was ist das Problem? Liegt es daran, dass con auch der Name der Verbindung zur Live-Datenbank ist und keine neue Zeichenfolge erhalten sollte?
EDIT
ich jetzt die Initial Catalog
Teil der Verbindung zum 'Master', wie con.close() vor con = New OleDbconnection
hinzugefügt und festgelegt haben, aber der Fehler ist jetzt bekomme ich
RESTORE DATABASE wird abnormal beendet. Der exklusive Zugriff konnte nicht abgerufen werden, da die Datenbank verwendet wird.
Zeigt Ihre Verbindungszeichenfolge auch auf die MaintenanceControl-Datenbank? Eine Wiederherstellung in einer Datenbank, mit der Sie verbunden sind, könnte das Problem sein - die Fehlermeldung scheint dies zu bestätigen. – phillyd
Haben Sie versucht 'Master verwenden; gehen; cmd.CommandText =" RESTORE DATABASE MaintenanceCo ..... '?" – artm
@phillyd Beim Öffnen des Programms zeigt "con" auf die Live-Version von MaintenanceControl, yeah –