Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Firebird软件包进行备份时出现的问题_C#_.net_Backup_Firebird2.5_Firebird .net Provider - Fatal编程技术网

C# 使用Firebird软件包进行备份时出现的问题

C# 使用Firebird软件包进行备份时出现的问题,c#,.net,backup,firebird2.5,firebird-.net-provider,C#,.net,Backup,Firebird2.5,Firebird .net Provider,我正在尝试使用firebird软件包开发firebird数据库的备份,但它给了我一个错误 FbConnectionStringBuilder cs = new FbConnectionStringBuilder(); cs.UserID = "SYSDBA"; cs.Password = "masterkey"; cs.Database = "C:\\Develop\\Database\\DB\\Database.fdb";

我正在尝试使用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+=newserviceoutputEventHandler(ServiceOutput)

错误是:

错误CS0246类型或命名空间名称“ServiceOutputEventHandler” 找不到(是否缺少using指令或程序集 参考?)

错误CS0103当前数据库中不存在名称“ServiceOutput” 上下文


有人可以帮忙吗?

看起来您是为Firebird ADO.net提供程序的第2版复制的

有两个问题:

  • 您没有从该示例中复制
    ServiceOutput
    方法

    静态无效ServiceOutput(对象发送方,ServiceOutputEventArgs e)
    {
    控制台写入线(e.Message);
    }
    
  • 该示例适用于Firebird ADO.net提供程序的一个非常旧的版本,并且不再适用于最新版本,因为Firebird ADO.net提供程序中不再存在
    ServiceOutputEventHandler
    ,因为在C#中不再需要该类型的对象

    解决办法是改变路线

    backupSvc.ServiceOutput+=新的ServiceOutputEventHandler(ServiceOutput);
    

    backupSvc.ServiceOutput+=ServiceOutput;
    

  • 另外,您可以将
    新FbBackupFile(@“D:\Temp\Database.fbk”,2048)
    更改为
    新FbBackupFile(@“D:\Temp\Database.fbk”)
    。仅当您要创建跨多个文件拆分的备份时,才需要提供该长度参数。

    看起来您是为Firebird ADO.net提供程序的版本2复制了该参数

    有两个问题:

  • 您没有从该示例中复制
    ServiceOutput
    方法

    静态无效ServiceOutput(对象发送方,ServiceOutputEventArgs e)
    {
    控制台写入线(e.Message);
    }
    
  • 该示例适用于Firebird ADO.net提供程序的一个非常旧的版本,并且不再适用于最新版本,因为Firebird ADO.net提供程序中不再存在
    ServiceOutputEventHandler
    ,因为在C#中不再需要该类型的对象

    解决办法是改变路线

    backupSvc.ServiceOutput+=新的ServiceOutputEventHandler(ServiceOutput);
    

    backupSvc.ServiceOutput+=ServiceOutput;
    

  • 另外,您可以将
    新FbBackupFile(@“D:\Temp\Database.fbk”,2048)
    更改为
    新FbBackupFile(@“D:\Temp\Database.fbk”)
    。仅当您要创建一个跨多个文件分割的备份时,才需要提供该长度参数。

    我现在找到了答案。我的问题是我有一个firebird的旧版本(2.4)。我升级到2.9版,一切正常。非常感谢你的帮助。你们都把我引向了正确的方向。

    我现在找到了答案。我的问题是我有一个firebird的旧版本(2.4)。我升级到2.9版,一切正常。非常感谢你的帮助。你们都把我引向了正确的方向。

    非常感谢!这是有道理的!但是ServiceOutput呢?这是一个方法调用吗?如果是这样,我如何才能正确编写此方法?我尝试过使用
    私有void ServiceOutput(对象发送者,ServiceOutputEventArgs e)
    。但是当我调用
    backupSvc.Execute()时我收到错误:“FirebirdSql.Data.FirebirdClient.FbException:“无法识别的服务参数块”。我不知道为什么我也会收到此错误。提前感谢您的帮助。“@MichaelEriksen此错误与
    ServiceOutput
    方法无关。你用的是哪个火鸟版本?@MichaelEriksen SPB是火鸟的内部结构。可能(也可能不)您试图将某个新标志传递给某个旧版本的Firebird,但该旧版本的Firebird还不知道该标志。@MarkRotterVeel我使用的是2。5@Arioch”“谢谢你的回答。但是哪面旗是可能的?非常感谢!这是有道理的!但是ServiceOutput呢?这是一个方法调用吗?如果是这样,我如何才能正确编写此方法?我尝试过使用
    私有void ServiceOutput(对象发送者,ServiceOutputEventArgs e)
    。但是当我调用
    backupSvc.Execute()时我收到错误:“FirebirdSql.Data.FirebirdClient.FbException:“无法识别的服务参数块”。我不知道为什么我也会收到此错误。提前感谢您的帮助。“@MichaelEriksen此错误与
    ServiceOutput
    方法无关。你用的是哪个火鸟版本?@MichaelEriksen SPB是火鸟的内部结构。可能(也可能不)您试图将某个新标志传递给某个旧版本的Firebird,但该旧版本的Firebird还不知道该标志。@MarkRotterVeel我使用的是2。5@Arioch”“谢谢你的回答。但哪面旗帜是可能性?