取消附加的备份服务

时间:2011-01-25 14:50:41

标签: delphi delphi-7 firebird

我的软件必须进行数据库备份,其中一项预期功能是可以取消此备份。

我能想到,我有三种选择:

  • 使用组件,例如TIBBackupService
  • 使用ShellExecute或
  • 以编程方式调用gbak
  • 使用GDS32.dll API以编程方式调用服务

我尝试了第一个,即使我取消它,服务也会继续运行(备份文件已经构建到最后,所有资源保持不变)。

第二个选项对我来说闻名,我不认为我能够中止这个操作。

第三个选项需要花费几个小时,所以我想知道:

  • 有没有办法使用第一个选项中止备份操作?
  • 第三种选择是否可行?如果是,该操作将是可以中止的吗?
  • Firebird备份操作是否可以取消?

由于

1 个答案:

答案 0 :(得分:3)

PS:你没有提到你正在使用的Firebird版本。

1)gbak是连接到数据库的“普通”应用程序,读取所有信息,并将其写入备份文件。恢复过程是相反的。

2)当您使用ServicesAPI进行备份时(在您的示例中为选项1和3),Firebird将启动gbak的“内部”版本来完成工作。

对于任何选项,如果您使用的是Firebird 2.1,则可以从其他连接运行“从mon $ statements中删除mon $ attachment_id =”。这将停止备份过程。使用FB 2.5,您甚至可以删除gbak连接,执行“从mon $ attachments中删除...”。

您可以在mon $ attachments表中找到查看mon $ remote_process的gbak附件ID。