Проблемы с резервным копированием с помощью пакета Firebird
Я пытаюсь создать резервную копию с базой данных firebird с помощью пакета firebird, но это дает мне ошибку.
FbConnectionStringBuilder cs = new FbConnectionStringBuilder();
cs.UserID = "SYSDBA";
cs.Password = "masterkey";
cs.Database = "C:\\Develop\\Database\\DB\\Database.fdb";
FbBackup backupSvc = new FbBackup();
backupSvc.ConnectionString = cs.ToString();
backupSvc.BackupFiles.Add(new FbBackupFile(@"C:\\Develop\\Database\\DB\\Database.fbk", 2048));
backupSvc.Verbose = true;
backupSvc.Options = FbBackupFlags.IgnoreLimbo;
backupSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);
backupSvc.Execute();
Я не могу понять, почему я не могу скомпилировать следующий оператор: backupSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);
Ошибки:
Ошибка CS0246 Не удалось найти тип или имя пространства имен ServiceOutputEventHandler (вам не хватает директивы using или ссылки на сборку?)
а также
Ошибка CS0103 Имя ServiceOutput не существует в текущем контексте
Кто-нибудь может помочь?
2 ответа
Я нашел ответ сейчас. Моя проблема в том, что у меня старая версия (2.4) firebird. Перешел на версию 2.9 - все работает нормально. Так что большое спасибо за вашу помощь. Вы все привели меня в правильное русло.
Похоже, вы скопировали этот пример для версии 2 провайдера Firebird ADO.net.
Есть две проблемы:
Вы пропустили копирование
ServiceOutput
метод из этого примераstatic void ServiceOutput(object sender, ServiceOutputEventArgs e) { Console.WriteLine(e.Message); }
Пример относится к довольно старой версии провайдера Firebird ADO.net и больше не работает для последних версий, потому что
ServiceOutputEventHandler
больше не существует в провайдере Firebird ADO.net, потому что этот тип объекта больше не нужен в C#.Решение - изменить строку
backupSvc.ServiceOutput += new ServiceOutputEventHandler(ServiceOutput);
к
backupSvc.ServiceOutput += ServiceOutput;
Кроме того, вы можете изменить new FbBackupFile(@"D:\Temp\Database.fbk", 2048)
к new FbBackupFile(@"D:\Temp\Database.fbk")
. Указание этого параметра длины необходимо только в том случае, если вы хотите создать резервную копию, разделенную на несколько файлов.