Использование SMO для резервного копирования базы данных SQL Server 2005 с помощью приложения C # для Windows Forms. Ошибка резервного копирования - PullRequest
1 голос
/ 15 января 2012

Это мой код для резервного копирования базы данных. Я следовал этому уроку , как видите, коды идентичны.Ошибка появляется после того, как я заполняю переменные.Я получаю ошибку:

Ошибка резервного копирования для сервера 'RITZEL-PC \ SQLEXPRESS'.

Функция резервного копирования:

    public void BackupDatabase(String databaseName, String userName, String password,        String serverName, String destinationPath)
    {
        Backup sqlBackup = new Backup();

        sqlBackup.Action = BackupActionType.Database;
        sqlBackup.BackupSetDescription = "ArchiveDataBase:" + DateTime.Now.ToShortDateString();
        sqlBackup.BackupSetName = "Archive";

        sqlBackup.Database = databaseName;

        BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
        ServerConnection connection = new ServerConnection(serverName, userName, password);
        Server sqlServer = new Server(connection);

        Database db = sqlServer.Databases[databaseName];

        sqlBackup.Initialize = true;
        sqlBackup.Checksum = true;
        sqlBackup.ContinueAfterError = true;

        sqlBackup.Devices.Add(deviceItem);
        sqlBackup.Incremental = false;

        sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
        sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;

        sqlBackup.FormatMedia = false;

        sqlBackup.SqlBackup(sqlServer);
    }

Нажатие кнопки

    private void BackUp_Btn_Click(object sender, EventArgs e)
    {
        String databaseName = @"D:\MY_THESIS\WORKING FILES\NNIT-RMS.mdf";
        String userName = "NNIT-Admin";
        String password = "password";
        String serverName = @"RITZEL-PC\SQLEXPRESS";
        String destinationPath = @"D:\";

        BackupDatabase(databaseName,userName,password,serverName,destinationPath);

    }

Информация о базе данных Мне не разрешено публиковать изображения, но я загрузил снимок экрана.Смотрите здесь: http://img268.imageshack.us/img268/9250/sqlg.jpg

Ответы [ 2 ]

1 голос
/ 24 июля 2012

Чтобы выполнить резервное копирование базы данных, процесс SQL Server запущен, так как необходимо иметь правильные разрешения для папки, на которую нацелено резервное копирование.

По моему опыту, если процесс сервера SQL не запущен как локальный администратор, у него не будет разрешения на запись в корневой каталог.

Если вы откроете SSMS и попытаетесь сделать резервную копию базы данных по пути назначения, вы можете столкнуться с той же проблемой.

Попробуйте изменить папку резервной копии на другую, отличную от корня диска или папки «Мои документы».

0 голосов
/ 08 февраля 2012

Не назначайте снова строковое значение, просто удалите их и вызовите резервную копию следующим образом:

BackupSqlDatabase("YourDataBaseName","sa","password","ServerName","C:\\YourDataBaseName.bak");
...