Как одновременно исполнить скрипт на 40 базах?
Как одновременно исполнить скрипт на 40 базах?
FB 1.5
Все 40 баз одинаковые, все доступны по сети.
Программисты присылают скрипт для обновления , его надо применить на на всех базах.
Сейчас это делается так:
Запускаем IBexpert присоединяем удалённо базу, исполняем скрипт.
ИТД по каждой базе.
Предполагается увеличение количества баз до 150, что для обновления совсем уж утомительно.
Как подключится ко всем базам одновременно и исполнить скрипт?
Все 40 баз одинаковые, все доступны по сети.
Программисты присылают скрипт для обновления , его надо применить на на всех базах.
Сейчас это делается так:
Запускаем IBexpert присоединяем удалённо базу, исполняем скрипт.
ИТД по каждой базе.
Предполагается увеличение количества баз до 150, что для обновления совсем уж утомительно.
Как подключится ко всем базам одновременно и исполнить скрипт?
Re: Как одновременно исполнить скрипт на 40 базах?
Использовать IBEScript.exe + простенький скриптик.
Re: Как одновременно исполнить скрипт на 40 базах?
даже для 40 баз программисты уже могли бы написать простое приложение, которое
1. имеет редактируемый список серверов
2. может взять скрипт и применить над списком серверов
3. может показать где скрипт прошел, а где нет.
1. имеет редактируемый список серверов
2. может взять скрипт и применить над списком серверов
3. может показать где скрипт прошел, а где нет.
Re: Как одновременно исполнить скрипт на 40 базах?
Да кто бы спорил. Только вот эти перепрограммисты в сторонней организации, и хотят денег за новую задачу.kdv писал(а): уже могли бы написать простое приложение
Мне руководство так и говорит:" Тебе надо, заплати им из своих. Чего ты, дед, лезешь, куда тебя не просят. Есть утверждённая технология, хоть тыща серверов- сиди перебирай".
Вот я и решил придумать самоделку.
Т.е. на каждый сервер по две строчки?Tonal писал(а):Использовать IBEScript.exe + простенький скриптик.
connect ......
IBEScript.exe(с ключами) myscript.sql >дописать результаты в журнал mylog.log
Все сточки в командный файл и на исполнение.
Re: Как одновременно исполнить скрипт на 40 базах?
а у вас разработчиков нет? программа-то достаточно простая получится, если не сказать примитивная.
кстати, вообще просто так прогонять скрипт - достаточно опасно. что если скрипт обломится по каким-то причинам на половине, и кто в этом будет виноват?
и вообще, это вопрос степени геморроя. если не лениво самому скрипт ваять - ок. или заплатить 5к руб за программку, думаю больше она не стоит.
кстати, вообще просто так прогонять скрипт - достаточно опасно. что если скрипт обломится по каким-то причинам на половине, и кто в этом будет виноват?
и вообще, это вопрос степени геморроя. если не лениво самому скрипт ваять - ок. или заплатить 5к руб за программку, думаю больше она не стоит.
Re: Как одновременно исполнить скрипт на 40 базах?
Одну строчку - параметры конекта передаются IBEScript.exe ключами.dedok писал(а):Т.е. на каждый сервер по две строчки?Tonal писал(а):Использовать IBEScript.exe + простенький скриптик.
connect ......
IBEScript.exe(с ключами) myscript.sql >дописать результаты в журнал mylog.log
Все сточки в командный файл и на исполнение.
Хотя если с корректной обработкой ошибок - то чуток посложней будет: строка на сервер + несколько строк процедуры вызова IBEScript.exe с обработкой ошибок
Только проверь сначала на тесте, а то так все 40 серверов завалить можно.
Re: Как одновременно исполнить скрипт на 40 базах?
Решал я такую задачу, 130 баз, решение в общем то для репликации баз, но есть функция и для обновления баз.
Решение работает четко, позволяет удаленно выполнять любые скрипты с контролем выполнения, но есть ньюанс , придеться в каждой базе создать для начало специальный генератор. Могу поделится на добрых условиях .
Решение работает четко, позволяет удаленно выполнять любые скрипты с контролем выполнения, но есть ньюанс , придеться в каждой базе создать для начало специальный генератор. Могу поделится на добрых условиях .
Re: Как одновременно исполнить скрипт на 40 базах?
я думаю, никто не откажется посмотреть примеры реализацииСанЕк писал(а):... Могу поделится на добрых условиях .
Re: Как одновременно исполнить скрипт на 40 базах?
это screenshot консоли управления
все построено на Web Services то есть есть на каждой машине стоит сервис и клиент клиент передает сообщения серверу сервер выполняет и возвращает результат в принципе все просто и надежно, в следующем году постараюсь написать подробнее о возможностях и принципах работы.
все построено на Web Services то есть есть на каждой машине стоит сервис и клиент клиент передает сообщения серверу сервер выполняет и возвращает результат в принципе все просто и надежно, в следующем году постараюсь написать подробнее о возможностях и принципах работы.
Последний раз редактировалось СанЕк 05 янв 2009, 18:28, всего редактировалось 1 раз.
Re: Как одновременно исполнить скрипт на 40 базах?
продолжу:
сейчас программа выполняет следующие функции.
1 - репликация с фильтром, то есть часть данных приходящих от клиентов пересылаются всем остальным клиентам. Репликация построена на триггерах - которые записывают в лог изменившиеся поля, репликация offline/online то есть если сервер клиента выключен данные репликации хранятся до тех пор пока не включиться сервер клиента.
2 - обновление базы данных, с контролем выполнения, в том числе автоматическая. В программу вводятся скрипты с последовательностью выполнения и если сервер клиента был выключен программа при первом коннекте сама обновит базу до текущего состояния.
3 - обновление программного обеспечения, через blob поля и спец. таблицу, контроль версионности ПО.
4 - самостоятельное обновление - так как весь процесс построен на клиент серверной технологии есть 2 exe которые могут обновлять друг друга, так же все процедуры делаются с главного сервера, клиентам абсолютно ничего делать не надо. Самообновление работает только в том случае если у текущего пользователя есть права на запуск программ.
5 - удаленное управление сервером, то есть для изменения каких либо его параметров не нужно не с кем связываются.
6 - имеются функции принудительонй синхронизации отдельных таблиц, то есть если по каким либо причинам произошла колизия данных или еще что то (да все ошибки происходящие на клиентах так же передаются на сервер) можно быстро все поправить.
7 - просмотр удаленного рабочего стола, на тот случай когда нет не какого другого способа удаленного администрирования, можно хотя бы взглянуть что там творится .
8 - в принципе любую базу данных можно подогнать для работы таким вот образом, надо только добавить необходимые триггеры, и решить проблему первичного ключа в таблицах. У меня с этим достаточно просто bigint = номер_предприятия*10000000+GEN_ID(), вся логика репликации строится чисто на триггерах, то есть в основной рабочей программе ничего менять не нужно.
Так как предполагалось использование программы в самых отдаленных уголках России, программа не требует не какого администрирования, за исключением открытия одного порта в брандмауэре.
Сразу после установки программа переходит в рабочий режим. Пока проект в эксплуатации пол года за это время у 80% клиентов программа еще не разу не выключалась и не вылетала, остальные 20% - там где существует домен и программа запускается под учетной записью ограниченного пользователя, есть проблемы решить которые удаленно очень сложно. Сервер успешно работает на Windows 2000 и выше, однажды даже на 98 запустили все это дело, под vista не тестировалось, в плане производительности требований нет.
из минусов:
Программа не поддерживает (пока) репликацию бинарных blob полей и таблицы с двойным первичным ключом, все это сделано намерено дабы не усложнять и без того сложную процедуру
и в связи с большим количеством баз и тем что юзвери на местах порою выключают сервер бывают не значительные рассинхронизации некоторых общих данных, такие нюансы максимально нивелированы администрированием прав в рабочей программе и в последнее время их нет.
сейчас программа выполняет следующие функции.
1 - репликация с фильтром, то есть часть данных приходящих от клиентов пересылаются всем остальным клиентам. Репликация построена на триггерах - которые записывают в лог изменившиеся поля, репликация offline/online то есть если сервер клиента выключен данные репликации хранятся до тех пор пока не включиться сервер клиента.
2 - обновление базы данных, с контролем выполнения, в том числе автоматическая. В программу вводятся скрипты с последовательностью выполнения и если сервер клиента был выключен программа при первом коннекте сама обновит базу до текущего состояния.
3 - обновление программного обеспечения, через blob поля и спец. таблицу, контроль версионности ПО.
4 - самостоятельное обновление - так как весь процесс построен на клиент серверной технологии есть 2 exe которые могут обновлять друг друга, так же все процедуры делаются с главного сервера, клиентам абсолютно ничего делать не надо. Самообновление работает только в том случае если у текущего пользователя есть права на запуск программ.
5 - удаленное управление сервером, то есть для изменения каких либо его параметров не нужно не с кем связываются.
6 - имеются функции принудительонй синхронизации отдельных таблиц, то есть если по каким либо причинам произошла колизия данных или еще что то (да все ошибки происходящие на клиентах так же передаются на сервер) можно быстро все поправить.
7 - просмотр удаленного рабочего стола, на тот случай когда нет не какого другого способа удаленного администрирования, можно хотя бы взглянуть что там творится .
8 - в принципе любую базу данных можно подогнать для работы таким вот образом, надо только добавить необходимые триггеры, и решить проблему первичного ключа в таблицах. У меня с этим достаточно просто bigint = номер_предприятия*10000000+GEN_ID(), вся логика репликации строится чисто на триггерах, то есть в основной рабочей программе ничего менять не нужно.
Так как предполагалось использование программы в самых отдаленных уголках России, программа не требует не какого администрирования, за исключением открытия одного порта в брандмауэре.
Сразу после установки программа переходит в рабочий режим. Пока проект в эксплуатации пол года за это время у 80% клиентов программа еще не разу не выключалась и не вылетала, остальные 20% - там где существует домен и программа запускается под учетной записью ограниченного пользователя, есть проблемы решить которые удаленно очень сложно. Сервер успешно работает на Windows 2000 и выше, однажды даже на 98 запустили все это дело, под vista не тестировалось, в плане производительности требований нет.
из минусов:
Программа не поддерживает (пока) репликацию бинарных blob полей и таблицы с двойным первичным ключом, все это сделано намерено дабы не усложнять и без того сложную процедуру
и в связи с большим количеством баз и тем что юзвери на местах порою выключают сервер бывают не значительные рассинхронизации некоторых общих данных, такие нюансы максимально нивелированы администрированием прав в рабочей программе и в последнее время их нет.