Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Firebird создание архивной копии  (Прочитано 9592 раз)
0 Пользователей и 1 Гость смотрят эту тему.
liones
Постоялец

ru
Offline Offline
Пол: Женский

« : 28-04-2010 04:38 » new

Подскажите, пожалуйста, как программно создать архивную копию базы. Есть конешно утилиты сервера специальные, но не могу сообразить как их вызвать из своего приложения.
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 28-04-2010 09:00 » 

если вы используете штатные IBX, то для них надо ставить обновление на седьмую версию дельфей, после чего накатывать ещё один пакет с административными тулзами. лучше всего изначально использовать FIB+, в который эти утилиты входят изначально, да и сами компоненты позволяют сэкономить кучу времени.

в общем случае, чтобы создать архивную копию базы, вам надо подключиться к так называемому Service Manager-у, представиться, и дать ему соответствующую команду. делается это через клиентскую часть. для FB - это fbclient.dll, для IB - gds32.dll. нормальные клиенты позволяют на подобные нюансы не заморачиваться, но поскольку исходники того же ФБ открыты - всегда можете под любой язык написать хидеры, импортнуть функции, и спокойно их юзать.

liones, если вы хотите что-либо "сделать программно", указывайте язык, хорошо? потому что лето, и телепаты в отпусках. на PHP, например, всё это придётся немного по-другому делать.
Записан

x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #2 : 28-04-2010 11:26 » 

liones, если Вы планируете подружится с жарптицей, очень внимательно изучите ibase.ru.
Записан

liones
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #3 : 25-10-2010 04:16 » 

Пыталась сделать копию из командной строки утилитой gbak.exe. Написала вот такой код для кнопки
Код:
comstr:='"'+utilitpath+'gbak.exe" -b "'+datpath+'BD.gdb" "'+arhivpath+'copy.gbk"';
ShellExecute(Handle,'open',pchar(comstr),nil,nil,sw_show);
но не работает. Где ошибка?
Руками из командной строки все работает, проверяла, копию делает.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 25-10-2010 04:39 » 

бэкап
gbak.exe -user ЮЗЕР -pas ПАРОЛЬ -b "ПОЛНЫЙ ПУТЬ К БАЗЕ" "ПОЛНЫЙ ПУТЬ К БЭКАПУ" -v

восстановление
gbak.exe -user ЮЗЕР -pas ПАРОЛЬ -r "ПОЛНЫЙ ПУТЬ К БЭКАПУ" "ПОЛНЫЙ ПУТЬ К БАЗЕ" -o -v

(параметр -o - восстанавливать по одной таблице)
(параметр -v - показывать вывод в консоли)

зачем у меня параметр -o присутствует, я уже не помню ))) Пусть знатоки подскажут, как лучше...
Записан

liones
Постоялец

ru
Offline Offline
Пол: Женский

« Ответ #5 : 25-10-2010 05:01 » 

а почему тогда из командной строки не требует ни пароля, ни пользователя?

Добавлено через 2 минуты и 52 секунды:
похоже проблема не в пароль-пользователь, а в вызове процедуры
Код:
ShellExecute(Handle,'open',pchar(comstr),nil,nil,sw_show);
« Последнее редактирование: 25-10-2010 05:04 от liones » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 25-10-2010 05:12 » 

Цитата
а почему тогда из командной строки
из какой именно командной строки ?

Добавлено через 1 минуту и 47 секунд:
liones, в вызове функции сделай разделение по запускаемому и параметрам:

модуль:
gbak.exe

параметры:
-user ЮЗЕР -pas ПАРОЛЬ -b "ПОЛНЫЙ ПУТЬ К БАЗЕ" "ПОЛНЫЙ ПУТЬ К БЭКАПУ" -v

 
« Последнее редактирование: 25-10-2010 05:14 от Алексей1153 » Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines