2011-01-25 47 views
2

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

正如我能想到的,我有三种选择:

  • 使用的组件,如TIBBackupService
  • 编程调用GBAK使用的ShellExecute左右
  • 编程调用使用GDS32.dll服务API

我试过了第一个,即使我取消了它,服务仍在运行(备份文件一直建立,直到所有资源保持不变)。

第二个选项对我来说味道,我不认为我也能够中止操作。

第三个选项将花费一些时间,因此我倒是想知道:

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

感谢

+0

firebird备份操作根本可以取消吗? – 2011-01-25 14:53:49

回答

3

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

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

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

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

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