powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Синхронизация метаданных
24 сообщений из 24, страница 1 из 1
Синхронизация метаданных
    #33096200
Евгений_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мастера, поделитесь пожалуйста своим опытом!

К примеру, где-то на сервере крутится "боевая" база. Для дальнейшей работы над ней и над клиентской частью, я делаю на свою рабочую машину локальную копию.

Поработал. Внёс изменения в структуру таблиц, ХП и т.д.

А теперь мне нужно внести все изменения, которые я сделал в метаданных своей локальной копии, на основную рабочую базу. Как вы это делаете? Есть ли для этого какое-то средство автоматизации, или же можно только вручную писать скрипт для обновления?
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096208
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все исправления делаю сразу в скриптах.
Как только отладил какое-то изменение - кладу соотвествующий скрипт в специальный каталог и описываю изменение в черновике-документации.
Когда решаем выпускать очередной апдейт - все скрипты уже готовенькие лежат в кучке, там же лежит и whatsnew.doc
Осталось все скрипты разом прогнать по рабочей базе и/или положить их в InstallShield для рассылки на удаленые базы.
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096221
Евгений_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть вы под каждую сущность БД отводите отдельный файлик со скриптом? А если создание зависимых таблиц должно происходить в определённой последовательности?
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096225
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_CТо есть вы под каждую сущность БД отводите отдельный файлик со скриптом? А если создание зависимых таблиц должно происходить в определённой последовательности?
А у меня все файлики имеют цифровые имена :)
Версия_ПодВерсия_НомерСтрокиВДокументации_НомерФайлика.sql
И все скрипты запускаются всегда в алфавитном порядке.
В моем рабочем каталоге скрипты конечно называются по имени таблицы или ХП которые в них описаны, а при копированнии в каталог для апдейта получают цифровое имя. Этакий ручной CVS :)
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096229
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 White Owl

>Все исправления делаю сразу в скриптах.

Согласен, скрипты ИМХО самое удобное.

2 Евгений_C
>То есть вы под каждую сущность БД отводите отдельный файлик со скриптом? А если создание зависимых таблиц должно происходить в определённой последовательности?

Можно все складывать в один файл. В БД изменения очевидно есть двух видов: изменение хранилища (даные уже лежат) и изменение алгоритмов.

Со вторым все просто, делается drop-create (или alter, но он у нас почему-то при интенсивном использовании завешивал сервер) для всех процедур и представлений, не особо задумываясь менялась процедура/представление или нет. Хотя по-правильному наверное нужно составлять список обновленных объектов, например в специальной таблице, потом выполнять алтер только для них, это не сложно, но лень. Зато нет проблемы что что-то забудем.

С первым проблема, "дроп табле" сделать нельзя, поэтому пишется специальный скрипт со всеми "алтер табле" и всем что с этим связано, в него складываются все изменения. Скрипт пишется таким образом, чтобы при выполнении старые изменения приводили к некритическим ошибкам, это несложно, такие ошибки игнорируются. Скрипт периодически чистится и старые изменения переносятся в файл создания БД.
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096233
Евгений_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем ответившим. Понятно, буду пока организовывать работу с файловыми скриптами, если никто не подскажет более удачной методки.

Кстати, а что вы можете сказать по поводу ПоверДизайнер? По идее, поскольку это родной Сайбейзавский продукт, то он должен вполне корректно работать с АСА. Обратное моделирование там есть, я уже попробывал, хорошо работает. А заливка в базу изменений, внесённых в модель, там ведь наверное должна быть? Или лучше не связываться?
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096506
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO
Лучший вариант использовать PowerDesigner, поддерживать изменения в модели
и делать скрипт по update модели.
Версии моделей держать в репозитории PowerDesigner.

С уважением,
Андрей Колчанов
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096706
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolchanovIMHO
Лучший вариант использовать PowerDesigner, поддерживать изменения в модели
и делать скрипт по update модели.
Версии моделей держать в репозитории PowerDesigner.

С уважением,
Андрей Колчанов
Чтобы PD хорошо понимал ASA, придется малость "напильником" его доработать (DBMS). Мне кажется, команда разработчиков PD могла бы побольше внимания уделить ASA.

Я лично тоже синхронизирую БД методом сохранения нужных DDL и DML скриптов в файлы и последующим их выполнением на других БД. Сейчас в фирме уже наполовину готова собственная разработка CSV на базе ASA9, где в БД описано хранилище проектов, моделей, связей между ними, сборок, скриптов и присоединенных файлов входящих в сборку, патчи сборок, списка подписавшихся на патчи БД и системы прав пользователей к проектам, модулям, сборкам и патчам. Структура БД фактически полностью готова, теперь необходимо написать генерацию скриптов на патчи, клиентское приложение, подумываем организовать его на веб-сервисах через MacroSQL, осталось только найти свободное время. В дальнейшем можно будет еще написать парсер трайс-файла ASA, чтобы можно было регистрировать в сборках скрипты изменений не только ручками, но и по трассировке БД. Так же неплохо бы потом написать реинжинеринг сборки скрипта создания новых обьектов по обьектам модели, для копирования модели в другую БД. Проект open-source (т.е. делается собственными средствами и не является собственностью фирмы), если доделаем и он оправдает то, что мы от него ожидаем, тогда выложим на общее пользование и так же в интернете выложим на его базе хранилище наших служебных обьектов и скриптов, вместо их выноса в FAQ.
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096887
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставлю и свои 5 копеек :)
Я все изменения в структуре базы делаю определенным юзером с правами ДБА.
Затем транслирую лог базы только для этого юзера и получаю готовый скрипт для внесения в боевую базу. Этот метод разу не подводил.
Правда, надо быть внимательным при создании объектов - правильно указывать владельца, ибо АСА по умолчанию делает владельцем активного юзера.
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33096917
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulJBВставлю и свои 5 копеек :)
Я все изменения в структуре базы делаю определенным юзером с правами ДБА.
Затем транслирую лог базы только для этого юзера и получаю готовый скрипт для внесения в боевую базу. Этот метод разу не подводил.
Правда, надо быть внимательным при создании объектов - правильно указывать владельца, ибо АСА по умолчанию делает владельцем активного юзера.
Хорошее решение, нужно будет прикрутить к своему CSV :)
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33097918
Фотография Dimyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня тоже очень интересует этот вопрос. Вот допустим создал я
окуратненько скрипт изменений, в центральную то базу я его и сам внесу,
а вот если на удаленных сидят полные балбесы и им нельзя доверить
ничего, как тогда автоматизировать процес внесения изменений на
удаленной базе? Вот White Owl говорит что через InstallShield, может
каким нибудь другим подобным оброзом можно? или может через репликацию
как нибудь?
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33097954
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimyan
Меня тоже очень интересует этот вопрос. Вот допустим создал я
окуратненько скрипт изменений, в центральную то базу я его и сам внесу,
а вот если на удаленных сидят полные балбесы и им нельзя доверить
ничего, как тогда автоматизировать процес внесения изменений на
удаленной базе? Вот White Owl говорит что через InstallShield, может
каким нибудь другим подобным оброзом можно? или может через репликацию
как нибудь?
Posted via ActualForum NNTP Server 1.2

passthrough for remote1, remote2, ...;
...
passthrough stop;
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33098290
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimyanа вот если на удаленных сидят полные балбесы и им нельзя доверить
ничего, как тогда автоматизировать процес внесения изменений на
удаленной базе? Вот White Owl говорит что через InstallShield, может
каким нибудь другим подобным оброзом можно?
Ну как же без балбесов на удаленных местах? Там только балбесы и сидят :)
У нас просто в апдейтах идут не только обновления базы, но и заменяемые куски от клиентского приложения. Поэтому InstallShield и был выборан.
Мы кладем в пакет апдейта еще и маленькую утилитку (написаную за пять минут). Которая читает все файлы из указаного каталога и в алфавитном порядке кидает эти файлы как есть через ODBC в базу. То есть тоже самое что и isql только без i :)
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33098486
Евгений_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulJBВставлю и свои 5 копеек :)
Я все изменения в структуре базы делаю определенным юзером с правами ДБА.
Затем транслирую лог базы только для этого юзера и получаю готовый скрипт для внесения в боевую базу. Этот метод разу не подводил.
Правда, надо быть внимательным при создании объектов - правильно указывать владельца, ибо АСА по умолчанию делает владельцем активного юзера.

А не могли бы вы поподробнее рассказать об этом? Где можно увидеть лог базы, и как выполнять его "трансляцию"?
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33100695
Фотография barry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_C
А теперь мне нужно внести все изменения, которые я сделал в метаданных своей локальной копии, на основную рабочую базу. Как вы это делаете? Есть ли для этого какое-то средство автоматизации, или же можно только вручную писать скрипт для обновления?

Можешь глянуть Database Comparer.
http://globalsoft.com.ua/cc/demo/dbcomparerbeta.zip
Для Sybase правда сравнение баз только по скриптам и в основном гонялось не на 9-й версии. Если будет желание - можем поработать...
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33101730
Евгений_C
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
barryМожешь глянуть Database Comparer.

Спасибо. Сейчас посмотрю.
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33123741
Фотография Dimyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рыжий Кот
passthrough for remote1, remote2, ...;
...
passthrough stop;
А можно пожалуйста немного по подробнее, а то из BOL как то не совсем понял :( (или совсем непонял :( )
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33123820
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBDelta
для SQL Anywhere и бесплатно, для пятой версии работало хорошо, для девятой не пробовал: пользуюсь PD
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33123873
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimyan Рыжий Кот
passthrough for remote1, remote2, ...;
...
passthrough stop;
А можно пожалуйста немного по подробнее, а то из BOL как то не совсем понял :( (или совсем непонял :( )

например есть центральная база + две удаленных, remote1 и remote2 пользователи sql remote.

если необходимо, скажем, добавить к табличке поле, то нужно написать.

авторpassthrough for remote1, remote2;

alter table "dba"."mytable"
add new_field char(200) ;

passthrough stop;

команда alter table "dba"."mytable"... выполнится как на консолидированной, так и на перечисленных удаленных базах с пользователями remote1 и remote2.
Так можно выполнять почти все инструкции DDL.

Советы по личному опыту:
- по возможности тестируйте код на тестовой базе;
- не забывайте про ; :)
- не загоняйте много инструкций между операторами passthrough for ... passthrough stop, делайте маленькими "транзакциями";
- при создании новой таблички часто забывал ее добавить в публикацию для репликации;
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33124251
Фотография Dimyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рыжий Кот пишет:
> Так можно выполнять почти все инструкции DDL.
>

А можно гденибудь посмотреть какие инструкции DDL нельзя выполнять таким
образом?

>- при создании новой таблички часто забывал ее добавить в публикацию
> для репликации;
Я правильно понял что публикацию таким образом (например добавление в
нее новой таблицы) менять можно?
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33124371
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimyan
Рыжий Кот пишет:
> Так можно выполнять почти все инструкции DDL.
>

А можно гденибудь посмотреть какие инструкции DDL нельзя выполнять таким
образом?

>- при создании новой таблички часто забывал ее добавить в публикацию
> для репликации;
Я правильно понял что публикацию таким образом (например добавление в
нее новой таблицы) менять можно?
Posted via ActualForum NNTP Server 1.2

насчет первого - наверное в документации, но я пока не встретил ограничений. Спокойно доабвляются пользователи, меняются пароли, тригеры, ключи, ХП, функции... просто потребуется немного внимания и опыта.

второй вопрос - ответ положительный:

Код: plaintext
1.
2.
3.
4.
5.
passthrough for remote1, remote2;

alter publication "dba"."mypublication"
add table "dba"."mytable";

passthrough stop;
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33124420
Фотография Dimyan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рыжий Кот, спасибо, буду пробывать. На первый взгляд (имхо) это наиболее
удобный способ.
Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33124859
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Евгений_C
Я лог транслирую централом.
Там в утилитах есть Translate Log File.
На определенном шаге утиль спрашивает для какого юзера транслейтить: для всех или для указанного. Я указываю для кого ... и все. В результате получаю оттранслированный лог в виде SQL-файла, но в нем содержатся только те операции, которые производил этот юзер. Немного поработав напильником получаем готовый скрипт для passthrough for ...
...
Рейтинг: 0 / 0
Синхронизация метаданных
    #33125681
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 PaulJB

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


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