powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
20 сообщений из 20, страница 1 из 1
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40076447
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

1. событие прогресса подразумевает просто передачу текста, eсть ли возможность получить процентуальное значение?

Код: pascal
1.
2.
3.
4.
5.
......
TFDPhysServiceProgressEvent = procedure (ASender: TFDPhysDriverService; const AMessage: String) of object;
......
property OnProgress: TFDPhysServiceProgressEvent read FOnProgress write FOnProgress;
......



2. Не видно и возможности прерывать выполнение резервного копирования, есть ли возможность прервать этот процесс корректно?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
TFDFBNBackup = class (TFDIBService)
..............

TFDIBService = class (TFDPhysDriverService)
  ..........
  published
    property DriverLink: TFDPhysIBBaseDriverLink read GetDriverLink write SetDriverLink;
    property Protocol: TIBProtocol read FProtocol write FProtocol default ipLocal;
    property Host: String read FHost write SetHost;
    property Port: Integer read FPort write FPort default 0;
    property InstanceName: String read FInstanceName write FInstanceName;
    property UserName: String read FUserName write FUserName;
    property Password: String read FPassword write FPassword;
    property SqlRoleName: String read FSqlRoleName write FSqlRoleName;
    property ConnectTimeout: LongWord read FConnectTimeout write FConnectTimeout default 0;
    property QueryTimeout: LongWord read FQueryTimeout write FQueryTimeout default 0;
    property OnProgress: TFDPhysServiceProgressEvent read FOnProgress write FOnProgress;
    // Interbase encryption
    property SEPassword: String read FSEPassword write FSEPassword;
  end;




Спасибо
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40076457
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Нет, нельзя.
2. Просто пристрели сервис с помощью Detach (StopService или что там у твоих компонент
способно вызвать isc_detach_service()) и молись чтобы сервер это заметил.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40076460
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

1. Нет, нельзя.
2. Просто пристрели сервис с помощью Detach (StopService или что там у твоих компонент
способно вызвать isc_detach_service()) и молись чтобы сервер это заметил.


т.е. без "молиться" никак?
А как же с Delta которая может остаться? или TFDFBNBackup корректно обработает эту ситуацию?
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40076462
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак.
Нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077014
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

из компонент сервером "управлять" можно только через services api. Это кидание разных команд на сервер.
Команду кинул - сервер начинает выполнять. Команды обычно "непрерываемые". Например,
если запустить nbackup и грохнуть его, то база автоматически не разблокируется и сервер дельту не удалит, потому что даже nbackup просто кидает команды серверу. Разве что он после "блокирования" БД умеет базу скопировать куда-то.
И с обычным gbak-ом так же - если приложение можно пристрелить, то его запуск с -se или через services api только команду серверу дает, и сервер дальше ее выполняет до упора.

"Прогресс" при операциях что gbak, что nbackup оценить невозможно. Потому что серверу неинтересен ни размер базы, ни скорость, с которой делается бэкап или нбэкап.
Такие дела.

p.s. т.е. размер базы-то получить можно через isc_database_info (или какой-то компонент), но в БД могут быть пустые страницы, версии записей, и т.д.
p.p.s. прогресс можно получить разве что в процессе шифрования/дешифрования БД в ФБ 3 или 4.
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077080
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
hlopotun,
..........
"Прогресс" при операциях что gbak, что nbackup оценить невозможно. Потому что серверу неинтересен ни размер базы, ни скорость, с которой делается бэкап или нбэкап.
..........

при создании резервной копии получаю прогресс тупо сравнивая в таймере размер файла базы данных и размер файла резервной копии в момент резервного копирования. Это работает, единственно нужно правильно выбрать функцию получения размера файлов (не все опробованные варианты отрабатывали правильно с открытыми файлами).
А вот при восстановлении из резервной копии уже засада. База данных сразу создаётся в полном размере и сравнивать его с размером резервной копии смысла не имеет. Думал может можно что то из события OnProgress компонента TFDFBNRestore выяснить, но он почемуто не вызывается (в отличии от OnError, AfterExecute итп). Тут народ дискутирует на эту тему, но как решить эту проблему не нашли, посылают в форум поддержки firebird. Возможно TFDFBTrace может тут помочь. Короче тут решения пока не нашел.
Может у кого есть какие идеи?

Спасибо
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077088
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun,

единственное что приходит в голову это заглядывать в сам файл базы и смотреть смещение откуда начинаются пустые данные в процессе восстановления. Если FB сразу создаёт базу в полном размере значит чем то забивает пустое место. Остаётся разобраться чем забивает.
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077089
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun,

да, забивает 00
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077098
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun,

алгоритм примерно такой.
Смешаться из конца файла в сторону начала до появления первых не 00 данных.

У кого то есть подходявая процедура которая корректно сможет просканировать эти данные из открытого другим процессом файла?
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077112
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
У кого то есть подходявая процедура которая корректно сможет просканировать эти данные из открытого другим процессом файла?
CreateFile(..FILE_SHARE_READ or FILE_SHARE_WRITE...)
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077155
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Не учи человека плохому, угробит ведь пользователям базы...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077163
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
угробит ведь пользователям базы...
Как? Если открывать с GENERIC_READ?

Не слышал историю, как в базе нужно было поменять номер телефона? Люди открыли базу в блокноте, нашли нужную строку и поменяли. Когда приложение перестало запускаться, открыли еще раз и вернули номер обратно.
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077165
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

_Vasilisk_,

Не учи человека плохому, угробит ведь пользователям базы...


другими словами корректного способа нет кроме как пытаться это выяснить у самого FB.
А любое чтение со стороны может нарушить целостность восстанавливаемой базы?
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077166
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
11.06.2021 12:42, Dimitry Sibiryakov пишет:
> Не учи человека плохому, угробит ведь пользователям базы...

он и без этого очень настойчиво и упорно сооружает квадратный пинзец.

зы: а "прогресс" нужен чтоб рисовать градусник!
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077167
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Корректного способа нет в принципе. Целостность восстанавливаемой базы может нарушить то
для чего ты свой "прогресс" используешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077205
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunединственное что приходит в голову это заглядывать в сам файл базы и смотреть смещение откуда начинаются пустые данные в процессе восстановления. Если FB сразу создаёт базу в полном размере значит чем то забивает пустое место. Остаётся разобраться чем забивает.
господи помилуй, вы серьезно? Раз вы про нбэкап, а не про бэкап, то
Нбэкап это КОПИРОВАНИЕ ФАЙЛА БАЗЫ.
Ничего там не "создается".
Вот вы делаете нбэкап базы
nbackup -b 0 db.fdb db.nb0
база копируется. Файл копируется, целиком.
Дальше
nbackup -b 1 db.fdb db.nb1

в db.nb1 копируются страницы, измененные с момента -b 0.

Потом, вы "восстанавливаете" базу из нбэкапа.
nbackup -r db.nb0 db.nb1
здесь просто сначала копируется db.nb0, потом на него "накатываются" изменения db.nb1.
Никакого "создания" базы данных тут нет, это тупо копирование файла, и вообще, db.nb0 это УЖЕ готовая база данных, которую для использования надо всего-лишь "разблокировать" (nbackup -f db.nb0).

Вы бы хоть прочитали документацию, пару раз.
https://www.ibase.ru/files/firebird/nbackup_ru.pdf
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077209
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunединственное что приходит в голову это заглядывать в сам файл базы и смотреть смещение откуда начинаются пустые данные в процессе восстановления.

и, соответственно, поскольку копирование файла это последовательное копирование блоков из одного файла в другой, если вы "заглянете" в создаваемый из копии файл, то сам файл БД Firebird это random access file, вы или получите сообщение что "база данных повреждена", или какую-то другую хрень. Просто потому, что целостный файл БД еще не скопирован до конца.
Это не gbak -c, который создает пустую базу, а потом наливает в нее данные.

я просто потрясён, что такие примитивы приходится объяснять. random access, sequential access, не, не знакомы?
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077224
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

спасибо что обьяснили. Доку по nbackup читал, и не раз, но не всё запомнил походу.
А вывод что сразу создаётся наполненный файл сделал из того что размер его сразу после начала копирования был равен файлу резервной копии а если изнасиловать и прервать то полько начальная часть была заполнена данными. Про рандомную запись даже не подумал. Каюсь ...
Уже переделываю просто на бесконечный прогрессбар без всякого анализа размера. Пользователя развлекать во время восстановления как то надо по любому, иначе он прибивает задачу и потом проблем ещё больше.
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077289
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunА вывод что сразу создаётся наполненный файл сделал из того
это винда так делает, давно. пора бы уж и узнать :-)
вы когда любой файл копируете, он сначала создается пустой весь, а уж потом наполняется содержимым из копии, поблочно. И ФБ тут вообще ни при чем.
...
Рейтинг: 0 / 0
FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
    #40077766
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
hlopotunА вывод что сразу создаётся наполненный файл сделал из того

это винда так делает, давно. пора бы уж и узнать :-)
вы когда любой файл копируете, он сначала создается пустой весь, а уж потом наполняется содержимым из копии, поблочно. И ФБ тут вообще ни при чем.
ну, например, при создании файла резервной копии этого не происходит. И отслеживание размера вполне себе работает.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC - TFDFBNBackup - прогресс и прерывание резервного копирования
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]