Ich habe eine SQL 2008 DB. Ich führe ein Formular aus, das diese Datenbank sichert und dann versucht, sie zu aktualisieren. Wenn das Update fehlschlägt, besteht die Idee darin, diese Sicherung wiederherzustellen. Hier ist der Code, den ich verwende, um die Sicherung wiederherzustellen.Wiederherstellen einer Datenbank von C#
Das Problem scheint zu sein, dass die Dateinamen, die ich wähle, sich von der Online DB unterscheiden. Ich möchte im Grunde die Datenbank auf dem Server durch die Sicherung ersetzen. Ich bekomme eine Ausnahme, wenn ich SqlRestore anrufe.
Die wichtigste Ausnahme, sagt
{ "für Server Wiederherstellung fehlgeschlagen 'localhost'."}
die inneren Ausnahmen Graben in diese Fehler zeigt
Eine Ausnahme ist aufgetreten während der Ausführung von eine Transact-SQL-Anweisung oder einen Batch.
und dann
Logische Datei 'DB' ist nicht Teil der Datenbank 'DB'. Verwenden Sie RESTORE FILELISTONLY, um die logische Datei Namen aufzulisten. \ R \ nRESTORE DATABASE ist , die abnormal beendet wird.
Ich nehme an, es gibt eine Möglichkeit, dies zu sagen, nur die vorhandene DB zu ersetzen, wie es ist.
Ich benutze dieses Bit des Codes, um den Dateipfad der DB zu erhalten, um ein Verzeichnis zu haben, um die Sicherung auszugeben. Vielleicht könnte dies verwendet werden, um die Dateinamen neu zu erstellen.
public string GetDBFilePath(String databaseName, String userName, String password, String serverName)
{
ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
return sqlServer.Databases[databaseName].PrimaryFilePath;
}
Sie müssen Dateien nicht verschieben, wenn Sie eine Sicherungskopie derselben Datenbank auf demselben Computer wiederherstellen.Relocate wird nur benötigt, wenn Datenbanken durch Backup/Restore verschoben und kopiert werden. –
Ok, hier ein paar Tipps: Was den Pfad der Backup-Datei anbetrifft, sollte man immer darauf achten, ob die Datei tatsächlich in Ihrem Quellordner existiert. In Bezug auf die Verlagerung könnte es ein Berechtigungsproblem sein, eine MDF-Datei zu schreiben. Achten Sie darauf, ob Ihre App die Berechtigung zum Lesen der .bak-Datei hat, überprüfen Sie in diesem Fall den SQL-Konfigurationsmanager: Der MSSQLServer-Dienst muss unter LocalSystem-Benutzer ausgeführt werden. –