Отменить прикрепленный сервис резервного копирования - PullRequest
2 голосов
/ 25 января 2011

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

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

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

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

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

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

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

Спасибо

1 Ответ

3 голосов
/ 26 января 2011

PS: Вы не упомянули версию Firebird, которую вы используете.

1) gbak - это «обычное» приложение, которое подключается к базе данных, читает всю информацию и записывает ее в файл резервной копии.Процесс восстановления обратный.

2) Когда вы используете ServicesAPI для резервного копирования (вариант 1 и 3, в вашем примере), Firebird запустит «внутреннюю» версию gbak для выполнения этой работы.

Для любой из опций, если вы используете Firebird 2.1, вы можете запустить «delete from mon $ операторов, где mon $ attachment_id =» из другого соединения.Это остановит процесс резервного копирования.С FB 2.5 вы можете даже разорвать соединение gbak, выполнив «delete from mon $ attachments where ...».

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

...