SQL Server выполняет резервное копирование с C # - PullRequest
6 голосов
/ 03 мая 2011

Я исследовал возможности создания резервных копий базы данных через SMO с помощью C #. Задача довольно проста и понятна. У меня только один вопрос: как я могу проверить, действительно ли была создана резервная копия?

SqlBackup.SqlBackup метод не возвращает параметров, и я даже не знаю, вызывает ли он какие-либо исключения. (единственное, что я знаю, это то, что он блокирует, потому что есть также метод SqlBackupAsync)

Буду признателен за любую помощь.

Ответы [ 2 ]

1 голос
/ 03 мая 2011

вы можете и очень возможно сделать то, что вы просили,

, но делать резервное копирование самостоятельно, используя SMO, это не очень сложно, но сложная часть - это управление резервным копированием и восстановлением.

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

SqlBackup.SqlBackup не возвращает никакого значения, это функция void. но он принимает один параметр "Сервер", попробуйте следующий код:

Server srvSql;

//Connect to Server using your authentication method and load the databases in srvSql
// THEN

Backup bkpDatabase = new Backup();
bkpDatabase.Action = BackupActionType.Database;
bkpDatabase.Incremental = true; // will take an incemental backup
bkpDatabase.Incremental = false; // will take a Full backup 
bkpDatabase.Database = "your DB name";
BackupDeviceItem bDevice = new BackupDeviceItem("Backup.bak", DeviceType.File);
bkpDatabase.Devices.Add(bDevice );

bkpDatabase.PercentCompleteNotification = 1;// this for progress
bkpDatabase.SqlBackup(srvSql);
bkpDatabase.Devices.Clear();
0 голосов
/ 03 мая 2011

Я исследовал проблему с помощью Reflector.NET (я полагаю, это законно, поскольку RedGate является сертифицированным партнером Ms Gold, а Reflector.NET открывает библиотеки .NET из коробки). Как я выяснил, метод генерирует два типа исключений:

FailedOperationException - в большинстве случаев другие исключения "переводятся" (я полагаю, перевод означает создание нового FailedOperationException и установку InnerException на то, что фактически было выброшено)

UnsupportedVersionException - в одном случае, когда для усечения журнала установлено значение TruncateOnly, а основная версия сервера больше или равна 10 (что такое sql server 2008?)

Это частично решает мою проблему, потому что я не уверен на 100%, что, если что-то пойдет не так, эти исключения действительно будут выброшены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...