powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Автоматическое обновление БД
11 сообщений из 11, страница 1 из 1
Автоматическое обновление БД
    #32594862
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас делаю так:
Выкладываю на сайт update.exe и update.sql.
Пользователь скачивает файлы и обновляет приложение с
помощью update.exe (Inno Setup) и из Query Analyzer-а
запускает update.sql для обновления БД (MS SQL).

Хотелось бы не заморачивать пользователей Query Analyzer-ом,
а автоматизировать процесс обновления БД. К примеру, чтобы
остался только update.exe, который бы сам проверял версию
БД и обновлял, если нужно. Заодно это предотвратит всякие
безобразия со стороны неопытных пользователей.

Подскажите, какие есть решения данной проблемы?

Использую: PowerBuilder + PowerDesigner + MS SQL + Inno Setup.

Спасибо.
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32594880
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напишите небольшую программку, которая соединяется с БД, проверяет ее версию, соединяется с инетом, проверяет выложенную версию скрипта, если она более новая, выкачивает ее и запускает скрипт на БД. Далее вешаете ее на Sheduler, чтобы она запускалась с нужной периодичностью. По идее почти у всех приложений так и сделано.

P.S. Правда не понятно, причем тут форум по СУБД Sybase. Может быть Вам нужно этот вопрос в форуме PB задать ?
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32595029
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да легче из этого Inno Setup вызвать ISQL, наверняка же можно.
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32595269
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSНапишите небольшую программку, которая соединяется с БД, проверяет ее версию, соединяется с инетом, проверяет выложенную версию скрипта, если она более новая, выкачивает ее и запускает скрипт на БД. Далее вешаете ее на Sheduler, чтобы она запускалась с нужной периодичностью. По идее почти у всех приложений так и сделано.
Да, можно и написать. Но ещё есть надежда, что такая программа уже есть :)
ASCRUSP.S. Правда не понятно, причем тут форум по СУБД Sybase. Может быть Вам нужно этот вопрос в форуме PB задать ?
Задавал в PB уже...
В Sybase аудитория побольше, как мне кажется, может знает кто....
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32595279
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДа легче из этого Inno Setup вызвать ISQL, наверняка же можно.
Наверное можно. Только как это сделать? Наверняка кучу времени убить нужно, чтобы это реализовать красиво.
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32595340
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одной из моих программ (ASA + PB) работает такая схема (упрощенно)

0. программа обновления обновляет клиентскую часть, базу (базы) не трогает.
1. клиент при подключении к БД сравнивает версию БД (из спец. таблички в БД) и версию зашитую в клиенте или из ini файла.
2. Если номер версии ниже, ищет в папке UpgradeDB скрипты обновления БД по имени файла "номер версии БД" + ".sql"
3. По очереди выполняются скрипты обновления начиная с текущей версии до нужной версии через EXECUTE IMMEDIATE.
4. Если нет ошибок, обновляется версия в табличке БД и продолжается работа с БД.
5. если есть ошибки предлагается переход в режим администратора БД, где юзер может выполнить любой скрипт.

БД обновляется при первом подключении клиента. При этом решается проблема того, что программа обновления клиента, да и сам клиент, заранее не знают где находятся все возможные БД пользователя программы. У меня клиентская часть работает с неограниченным количеством баз данных.

Кусочек кода по обновлению БД на PB
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
string ls_path = "UpgradeDB\"
string ls_name, ls_script = ""
integer i

FOR i = ai_dbversion +  1  TO ii_dbversion
  ls_name = ls_path + "v_" + string(i, "00000") + ".sql"
  IF FileExists(ls_name) THEN
    IF of_fileread(ls_name, ls_script) =  1  THEN
      IF SQLCA.of_execute(ls_script) <  0  THEN
	Return - 1 
      ELSE
	Update am_database SET version = :i WHERE database_id =  1 ;
	Commit;
      END IF
    END IF
  END IF
NEXT
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32595785
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rcryoВ одной из моих программ (ASA + PB) работает такая схема (упрощенно)
Спасибо, сделаю что-то подобное.

Жаль, что готовых программ на эту тему нет...
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32596259
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да почему же нет?
Мы обновления рассылаем в InstallShield (но это не так важно :) В InstallShiled'овском архиве лежат файлы обновляемые в клиентской программе, плюс куча sql скриптов. Они запускаются через примитивнейшую программку, написаную за пять минут, - открыть ODBC-connection по известному DSN, прочитать текстовый файл, запихнуть текстовый файл в открытый коннект, запустить на выполнение, закрыть коннект. И собственно говоря все. Коннект к базе осуществляется от имени специального юзера с DBA правами. Клиентам его имя/пароль не известны. В общем проблем за несколько лет не обнаружилось :)
Сначала вместо самописной программки использовали dbisqlc.exe из стандартного набора утилит. Потом решили перестраховаться и заменили его на свою программку.
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32596922
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.

Скоро начну писать wizard для обновления версии БД.

Возникает только один вопрос:
как сделать, чтобы PowerDesigner генерил скрипт,
который обновляет версию БД в какой-нить табличке?

Что-то типа:
=== crebas.sql ===
create table ....

alter table ....

insert into version_table(version) values ( %version% ).
=== crebas.sql ===
Где %version% - это версия БД в PowerDesigner-e.

Это необходимо для полной автоматизации процесса сборки.
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32597617
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свойствах модели PDM, на вкладке General есть параметр Database. Здесь можно создать и привязать к модели базу данных. В свойствах БД есть вкладка Script с двумя закладками Begin и End, туда и пишешь нужный скрипт

При генерации БД не забудь поставить галочки на вкладке Database, параметры Begin script и End script
...
Рейтинг: 0 / 0
Автоматическое обновление БД
    #32600368
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rcryoВ свойствах модели PDM, на вкладке General есть параметр Database. Здесь можно создать и привязать к модели базу данных. В свойствах БД есть вкладка Script с двумя закладками Begin и End, туда и пишешь нужный скрипт

При генерации БД не забудь поставить галочки на вкладке Database, параметры Begin script и End script

Спасибо!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Автоматическое обновление БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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