IBBackupService - backup на другой сервер. Как?!?!
IBBackupService - backup на другой сервер. Как?!?!
БД лежит на одном сервере, бэкап мы хотим положить на другой.
Единственная программа, в которой можно указать другой сервер - IBConsole.
Смотрю ее исходники и не могу понять как это сделано. Реализовано на обычной дельфийской компоненте ibBackupService. Ни там (ни в аналогичных компонентах из других наборов) нет явного свойства для указания имени второго сервера. Тем не менее, в IBConsole это реализовано. Как!?!? Смотрю исходники и не понимаю. С одной стороны, от создания объекта до вызова ServiceStart имя второго сервиса не передается, с другой стороные, указанное на форме имя второго сервера используется только (вроде) для наполнения комбо-бокса бэкап-альясов. Т.е. ни с какой стороны... Но ведь работает! Как?
Правда, честно скажу, пробовал я это давно, на работе сейчас все как-то недосуг, а дома двух серверов нет. Да и хэлп подтверждает - можно бэкап класть на другой сервер.
Была мысль, что имя сервера указывается в имени файла бэкапа, но нет, специальная проверка стоит, чтобы в имени файла не было имени сервера, никаких двойных слэшей, лишних двоеточий, только диск, каталоги и собственно имя файла.
И почему ни в одной другой программе это не реализовано?
Единственная программа, в которой можно указать другой сервер - IBConsole.
Смотрю ее исходники и не могу понять как это сделано. Реализовано на обычной дельфийской компоненте ibBackupService. Ни там (ни в аналогичных компонентах из других наборов) нет явного свойства для указания имени второго сервера. Тем не менее, в IBConsole это реализовано. Как!?!? Смотрю исходники и не понимаю. С одной стороны, от создания объекта до вызова ServiceStart имя второго сервиса не передается, с другой стороные, указанное на форме имя второго сервера используется только (вроде) для наполнения комбо-бокса бэкап-альясов. Т.е. ни с какой стороны... Но ведь работает! Как?
Правда, честно скажу, пробовал я это давно, на работе сейчас все как-то недосуг, а дома двух серверов нет. Да и хэлп подтверждает - можно бэкап класть на другой сервер.
Была мысль, что имя сервера указывается в имени файла бэкапа, но нет, специальная проверка стоит, чтобы в имени файла не было имени сервера, никаких двойных слэшей, лишних двоеточий, только диск, каталоги и собственно имя файла.
И почему ни в одной другой программе это не реализовано?
Сорри, не в тот раздел отправил (-)
Следовало бы в "Вопросы создания клиентских приложений..."
server manager умел
а) подключиться к любому серверу
б) положить файл backup на любую машину
кроме того, у IB/FB работает эдакое "тунелирование", когда к одному серверу IB/FB можно подключиться через другой.
в случае
"БД лежит на одном сервере, бэкап мы хотим положить на другой. " проще всего сделать shared folder на втором сервере, и на первом сделать бэкап через services api. только вот еще - в этом случае FB на первом сервере должен быть запущен не от LocalSystem, а от юзера, у которого есть права доступа на этот самый shared folder.
а) подключиться к любому серверу
б) положить файл backup на любую машину
кроме того, у IB/FB работает эдакое "тунелирование", когда к одному серверу IB/FB можно подключиться через другой.
в случае
"БД лежит на одном сервере, бэкап мы хотим положить на другой. " проще всего сделать shared folder на втором сервере, и на первом сделать бэкап через services api. только вот еще - в этом случае FB на первом сервере должен быть запущен не от LocalSystem, а от юзера, у которого есть права доступа на этот самый shared folder.
А как server manager ЭТО делал? Почему же IBConsole (которая заявлялась как замена ServerManager'а) "разучилась" так делать?kdv писал(а):server manager умел
а) подключиться к любому серверу
б) положить файл backup на любую машину
кроме того, у IB/FB работает эдакое "тунелирование", когда к одному серверу IB/FB можно подключиться через другой.
-
- Сообщения: 10
- Зарегистрирован: 18 ноя 2004, 22:15
IBConsole это вообще поделка, коей до сих пор и остается.
В services api попробуй указать ServerName
server1:server2
где server1 это через кого, а server2 - откуда бэкапить. может и сработает....
по крайней мере раньше такой routing работал, сейчас то работает, то нет, в разных версиях. в FB 1.5.1 должен работать...
В services api попробуй указать ServerName
server1:server2
где server1 это через кого, а server2 - откуда бэкапить. может и сработает....
по крайней мере раньше такой routing работал, сейчас то работает, то нет, в разных версиях. в FB 1.5.1 должен работать...
Столкнулся с такой же проблемой.
Сначала работал такой вариант:
имя, пароль одинаковые и на клиенте и на сервере
ServerName = "localhost"
DatabaseName - указывал удаленную базу (server:c:\path\basse.gdb)
т.е. он сервис конектил к локальной СУБД, а потом как-то переконекчивался к удаленной базе, но gbk сохранял на клиенте.
Когда поменял пароль на клиенте и они стали отличаться - работать перестало. Может этот вариант кому поможет.
Из этого следует, что как-то все таки можно сохранить гбк на клиенте.
Если кто решил эту проблему полностью, напишите (кроме варианта с gbak'ом и расшареными папками)
Сначала работал такой вариант:
имя, пароль одинаковые и на клиенте и на сервере
ServerName = "localhost"
DatabaseName - указывал удаленную базу (server:c:\path\basse.gdb)
т.е. он сервис конектил к локальной СУБД, а потом как-то переконекчивался к удаленной базе, но gbk сохранял на клиенте.
Когда поменял пароль на клиенте и они стали отличаться - работать перестало. Может этот вариант кому поможет.
Из этого следует, что как-то все таки можно сохранить гбк на клиенте.
Если кто решил эту проблему полностью, напишите (кроме варианта с gbak'ом и расшареными папками)
Через services api делал. Не нынешней системы, недокументированный, вещь в себе, то есть исключительно для внутреннего применения в Борланде. В IB6 заменён и выпущен в опен сорц уже в новом виде.Georgi-47 писал(а): А как server manager ЭТО делал? Почему же IBConsole (которая заявлялась как замена ServerManager'а) "разучилась" так делать?
вместо того чтобы строить всяческие домыслы, рекомендую читать документацию. с сервера на клиента - gbak, на сервере - gbak -se или services api.Из этого следует, что как-то все таки можно сохранить гбк на клиенте.
Server Manager в IB 4.x/5.x работал то так то сяк, в зависимости от ситуации - или вызывал gbak, или работал через servapi.