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

Его технически возможный, но был бы очень плохой дизайн, imo.

Вы могли сделать это путем создания строки и хранения его в nvarchar (макс.) поле (при использовании SQL-сервера или его эквивалента).

15
задан Anthony D 23 September 2009 в 15:14
поделиться

2 ответа

Я изменил свои функции резервного копирования и восстановления, чтобы они выглядели так:

public void BackupDatabase(SqlConnectionStringBuilder csb, string destinationPath)
{
    ServerConnection connection = new ServerConnection(csb.DataSource, csb.UserID, csb.Password);
    Server sqlServer = new Server(connection);

    Backup bkpDatabase = new Backup();
    bkpDatabase.Action = BackupActionType.Database;
    bkpDatabase.Database = csb.InitialCatalog;
    BackupDeviceItem bkpDevice = new BackupDeviceItem(destinationPath, DeviceType.File);
    bkpDatabase.Devices.Add(bkpDevice);
    bkpDatabase.SqlBackup(sqlServer);
    connection.Disconnect();

}

public void RestoreDatabase(String databaseName, String backUpFile, String serverName, String userName, String password)
{
    ServerConnection connection = new ServerConnection(serverName, userName, password);
    Server sqlServer = new Server(connection);
    Restore rstDatabase = new Restore();
    rstDatabase.Action = RestoreActionType.Database;
    rstDatabase.Database = databaseName;
    BackupDeviceItem bkpDevice = new BackupDeviceItem(backUpFile, DeviceType.File);
    rstDatabase.Devices.Add(bkpDevice);
    rstDatabase.ReplaceDatabase = true;
    rstDatabase.SqlRestore(sqlServer);
}

Таким образом, они просто используют любые файлы, которые есть. Больше нет и директив по перемещению файлов.

21
ответ дан 1 December 2019 в 01:11
поделиться

Вы добавляете параметры RelocateFile на основе имени базы данных, это неверно. Их следует добавлять на основе логического имени файла для каждого перемещаемого файла. Используйте Restore.ReadFileList , чтобы получить список логических имен файлов.

5
ответ дан 1 December 2019 в 01:11
поделиться