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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо. Сейчас посмотрю.
...
Рейтинг: 0 / 0
19.06.2005, 22:23
    #33123741
Dimyan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация метаданных
Рыжий Кот
passthrough for remote1, remote2, ...;
...
passthrough stop;
А можно пожалуйста немного по подробнее, а то из BOL как то не совсем понял :( (или совсем непонял :( )
...
Рейтинг: 0 / 0
20.06.2005, 01:28
    #33123820
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация метаданных
DBDelta
для SQL Anywhere и бесплатно, для пятой версии работало хорошо, для девятой не пробовал: пользуюсь PD
...
Рейтинг: 0 / 0
20.06.2005, 07:05
    #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
20.06.2005, 11:36
    #33124251
Dimyan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Синхронизация метаданных
Рыжий Кот пишет:
> Так можно выполнять почти все инструкции DDL.
>

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

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

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


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