Необходимо реализовать корректный механизм backup/restore с клиента.
Для работы с FireBird используются компоненты FIBPlus.
Т.к. делать restore в рабочую базу КАТЕГОРИЧЕСКИ не рекомендуется, то после backup выполняется restore во временный fdb-шник с другим именем. Потом основную базу можно dropнуть, но временный fdb, как я понимаю, переименовать средствами firebirda нельзя (или всё таки можно?).
Т.к. доступа к папке с файлами БД у клиента нет, то и его средствами переименовать временный fdb-шник не получится.
В общем, родился простенький алгоритм для решения этой проблемы.
1. Создаётся дополнительный fdb (dbname.fdb), в котором хранится имя основного fdb.
2. Для соединения с основным fdb, клиент сначала коннектится к dbname.fdb, получает имя основного fdb, после чего к нему и коннектится.
3. Алгоритм backup/restore выглядит следующим образом :
3.1 Делаем backup и restorим его в dd_mm_yy.fdb (т.е. новый fdb имя которого получаем по определённому алгоритму)
3.2 Переписываем в dbname.fdb имя основной fdb на dd_mm_yy.fdb.
3.3 Делаем drop старого fdb.
Вопрос в том, не изобретаю ли я велосипед?
