Проблемы с резервным копированием с помощью пакета 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.

Есть две проблемы:

  1. Вы пропустили копирование ServiceOutput метод из этого примера

    static void ServiceOutput(object sender, ServiceOutputEventArgs e)
    {
        Console.WriteLine(e.Message);
    }
    
  2. Пример относится к довольно старой версии провайдера 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"). Указание этого параметра длины необходимо только в том случае, если вы хотите создать резервную копию, разделенную на несколько файлов.

Другие вопросы по тегам