Как восстановить базу данных из C #

У меня есть БД SQL 2008. Я запускаю форму, которая поддерживает эту базу данных, а затем пытается обновить ее. Если обновление не удается, идея состоит в том, чтобы восстановить эту резервную копию. Вот код, который я использую для восстановления резервной копии.

public void RestoreDatabase(String databaseName, String backUpFile, String serverName, String userName, String password)
{
    Restore sqlRestore = new Restore();
    BackupDeviceItem deviceItem = new BackupDeviceItem(backUpFile, DeviceType.File);
    sqlRestore.Devices.Add(deviceItem);
    sqlRestore.Database = databaseName;
    ServerConnection connection = new ServerConnection(serverName, userName, password);
    Server sqlServer = new Server(connection);
    sqlRestore.Action = RestoreActionType.Database;

    string logFile = System.IO.Path.GetDirectoryName(backUpFile);
    logFile = System.IO.Path.Combine(logFile, databaseName + "_Log.ldf");

    string dataFile = System.IO.Path.GetDirectoryName(backUpFile);
    dataFile = System.IO.Path.Combine(dataFile, databaseName + ".mdf");

    Database db = sqlServer.Databases[databaseName];
    RelocateFile rf = new RelocateFile(databaseName, dataFile);
    sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFile));
    sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName + "_log", logFile));
    sqlRestore.SqlRestore(sqlServer);
    db = sqlServer.Databases[databaseName];
    db.SetOnline();
    sqlServer.Refresh();
}

Кажется, проблема в том, что имена файлов, которые я выбираю, отличаются от сетевых БД. Я в основном хочу заменить базу данных на сервере резервной копией. Я получаю исключение при вызове SqlRestore.

Главное исключение говорит {"

Ошибка восстановления для сервера 'локальный». «}

Копание во внутренних исключениях показывает эти ошибки

Возникла исключительная ситуация при выполнении оператора или пакета Transact-SQL.

а потом

Логический файлDB» не является частью базы данныхDB», Используйте RESTORE FILELISTONLY для вывода списка логических имен файлов. \ RRESTORE DATABASE завершается ненормально.

Я предполагаю, что есть какой-то способ сказать это, чтобы использовать замену существующей БД как есть.

Я использую этот фрагмент кода, чтобы получить путь к файлу БД, в котором есть каталог для создания резервной копии. Может быть, это можно использовать для воссоздания имен файлов.

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;
}

Ответы на вопрос(3)

Ваш ответ на вопрос