Проблемы с резервным копированием с помощью пакета Firebird - PullRequest
1 голос
/ 02 ноября 2019

Я пытаюсь создать резервную копию с базой данных 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 ]

0 голосов
/ 09 ноября 2019

Я нашел ответ сейчас. Моя проблема в том, что у меня есть старая версия (2.4) firebird. Я обновился до версии 2.9 - и все работает отлично. Так что большое спасибо за вашу помощь. Вы все направите меня в правильном направлении.

0 голосов
/ 03 ноября 2019

Похоже, вы скопировали пример для версии 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"),Указание этого параметра длины необходимо только в том случае, если вы хотите создать резервную копию, которая разбита на несколько файлов.

...