2011-01-25 5 views
2

Мое программное обеспечение должно создавать резервные копии баз данных, и одна из ожидаемых функций заключается в том, что эта резервная копия может быть отменена.Отменить приложение резервного копирования

Как я могу думать, у меня есть три варианта:

  • использовать компонент, такие как TIBBackupService
  • Программного называют GBAK с помощью ShellExecute или так
  • Программного позвонить в службу, используя GDS32.DLL API

Я попробовал первый, и даже если я отменил его, служба продолжает работать (файл резервной копии создается до конца, и все возобновления остаются неизменными).

Второй вариант пахнет мной, и я не думаю, что смогу также прервать операцию.

Третий вариант будет стоить несколько часов и так я хотел бы знать:

  • Есть ли способ, чтобы прервать операцию резервного копирования с использованием первого варианта?
  • Третий вариант жизнеспособен? Если да, операция будет отменена?
  • Возможно, операция резервного копирования Firebird полностью отменена?

Благодаря

+0

Является ли операция резервного копирования firebird вообще отменой? –

+0

@Lasse Добавлено на вопрос –

+0

Вы можете легко отменить выполнение gbak с вызовом TerminateProcess. Это некрасиво, но это выполнит работу! –

ответ

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 where ...».

Вы можете найти, что такое идентификатор приложения gbak, смотрящий mon $ remote_process в таблице mon $ attachments.

Смежные вопросы