j'ai réussi à écrire une fonction qui me permet de sauvegarder une base de données SQL Server, mais je me bats à essayer de restaurer et d'utiliser la version sauvegardée.RESTORE DATABASE se termine anormalement
Mon 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
Mais sur la ligne .ExecuteNonQuery()
, je reçois l'erreur suivante;
RESTORE DATABASE se termine de manière anormale.
RESTORE ne peut pas traiter la base de données « MaintenanceControl » parce qu'il est utilisé par cette session. Il est recommandé d'utiliser la base de données master lors de cette opération.
Quel est le problème? Est-ce parce que con est aussi le nom de la connexion à la base de données en direct et ne devrait pas recevoir de nouvelle chaîne?
EDIT
J'ai maintenant mis la Initial Catalog
partie de la connexion au « Maître », ainsi que con.Close ajouté() avant con = New OleDbconnection
mais l'erreur que je reçois maintenant est
RESTORE DATABASE se termine anormalement. L'accès exclusif n'a pas pu être obtenu car la base de données est en cours d'utilisation.
Est-ce que votre point de chaîne de connexion à la base de données MaintenanceControl aussi? Effectuer une restauration sur une base de données à laquelle vous êtes connecté pourrait être le problème - le message d'erreur semble certainement le suggérer. – phillyd
Avez-vous essayé 'Use master; allez; cmd.CommandText =" RESTORE DATABASE MaintenanceCo ..... '? – artm
@phillyd A l'ouverture du programme,' con' pointe vers la version live de MaintenanceControl, ouais –