Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Автоматическое обновление БД / 11 сообщений из 11, страница 1 из 1
08.07.2004, 11:08
    #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
08.07.2004, 11:14
    #32594880
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое обновление БД
Напишите небольшую программку, которая соединяется с БД, проверяет ее версию, соединяется с инетом, проверяет выложенную версию скрипта, если она более новая, выкачивает ее и запускает скрипт на БД. Далее вешаете ее на Sheduler, чтобы она запускалась с нужной периодичностью. По идее почти у всех приложений так и сделано.

P.S. Правда не понятно, причем тут форум по СУБД Sybase. Может быть Вам нужно этот вопрос в форуме PB задать ?
...
Рейтинг: 0 / 0
08.07.2004, 11:53
    #32595029
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое обновление БД
Да легче из этого Inno Setup вызвать ISQL, наверняка же можно.
...
Рейтинг: 0 / 0
08.07.2004, 13:03
    #32595269
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое обновление БД
ASCRUSНапишите небольшую программку, которая соединяется с БД, проверяет ее версию, соединяется с инетом, проверяет выложенную версию скрипта, если она более новая, выкачивает ее и запускает скрипт на БД. Далее вешаете ее на Sheduler, чтобы она запускалась с нужной периодичностью. По идее почти у всех приложений так и сделано.
Да, можно и написать. Но ещё есть надежда, что такая программа уже есть :)
ASCRUSP.S. Правда не понятно, причем тут форум по СУБД Sybase. Может быть Вам нужно этот вопрос в форуме PB задать ?
Задавал в PB уже...
В Sybase аудитория побольше, как мне кажется, может знает кто....
...
Рейтинг: 0 / 0
08.07.2004, 13:05
    #32595279
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое обновление БД
MasterZivДа легче из этого Inno Setup вызвать ISQL, наверняка же можно.
Наверное можно. Только как это сделать? Наверняка кучу времени убить нужно, чтобы это реализовать красиво.
...
Рейтинг: 0 / 0
08.07.2004, 13:24
    #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
08.07.2004, 15:41
    #32595785
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматическое обновление БД
rcryoВ одной из моих программ (ASA + PB) работает такая схема (упрощенно)
Спасибо, сделаю что-то подобное.

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

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

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

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

alter table ....

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

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

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

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

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


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