Резервное копирование C# SMO удаленной базы данных к локальной машине

У меня есть приложение, которое выполняет резервные копирования и восстановления баз данных SQL, это хорошо работает на локальной машине, однако если я выполняю это против SQL-сервера, размещенного на другой машине, я получаю следующую ошибку

Microsoft. SqlServer. Управление. Smo. FailedOperationException: Резервное копирование перестало работать для Сервера '25.98.30.79'.---> Microsoft. SqlServer. Управление. Распространенный. ExecutionFailureException: исключение произошло при выполнении оператора Transact-SQL или пакета.---> Система. Данные. SqlClient. SqlException: не Может открыть устройство резервного копирования 'C:\Program Files\State Manager\Archive\Capture\20100217152147*product*\databases*database ** database*.bak'. Ошибка операционной системы 3 (Система не может найти путь указанным.).

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

Кто-либо знает, как я могу положить обратно эти данные к машине, от которой называют код?

Мой код ниже.

    private string Name;
    private string Server;
    private string dbName;
    private string user;
    private string password;

    public Boolean performCapture(String archiveDir)
    {
        String destination = archiveDir + "\\" + Name;
        if (!System.IO.Directory.Exists(destination))
        {
            System.IO.Directory.CreateDirectory(destination);
        }

        Server sqlServer = connect();
        if (sqlServer != null)
        {
            DatabaseCollection dbc = sqlServer.Databases;
            if (dbc.Contains(dbName))
            {
                Backup bkpDatabase = new Backup();
                bkpDatabase.Action = BackupActionType.Database;
                bkpDatabase.Database = dbName;
                BackupDeviceItem bkpDevice = new BackupDeviceItem(destination + "\\" + dbName + ".bak", DeviceType.File);

                bkpDatabase.Devices.Add(bkpDevice);
                bkpDatabase.Incremental = false;
                bkpDatabase.Initialize = true;
                // Perform the backup
                bkpDatabase.SqlBackup(sqlServer);

                if (System.IO.File.Exists(destination + "\\" + dbName + ".bak"))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            return false;
        }
    }
11
задан Andy March 28 April 2011 в 09:02
поделиться

2 ответа

Нет, это никогда не сработает - SQL Сервер может выполнять резервное копирование только на диск, физически подключенный к реальной машине SQL Server. Вы не можете ни при каких обстоятельствах создать резервную копию удаленного SQL Server на вашем локальном жестком диске - просто невозможно (ни в SMO, ни в SQL Server Management Studio).

17
ответ дан 3 December 2019 в 06:21
поделиться

Как сказал Marc_s, это невозможно сделать. В качестве обходного пути вы можете сделать так, чтобы ваша база данных вызывала программу командной строки на хосте, которая отправляла файл по ftp, копировала его в какую-нибудь общую папку или что-то еще.

Good Luck

1
ответ дан 3 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: