C# 使用Firebird软件包进行备份时出现的问题
我正在尝试使用firebird软件包开发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";
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”“谢谢你的回答。但哪面旗帜是可能性?