|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
Всем доброго дня, предстоит правка программы миграции базы данных с одно версии на другую. В частности задача изменить процедуру обновления триггеров. В принципе понятно что нужно делать но хотелось бы послушать сообщество на тему подводных камней которые могут ждать при обновлении триггеров. Дабы ничего не упустить. Буду признателен за советы и примеры ошибок. FB2.5.n и FB3.n Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 11:46 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
а где ты там камни нашел? 1. базу в даун. 2. накатить 3. поднять. зы: и не надо песен про 24/7 - их никто не услышит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 11:50 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
На живую БД или есть окно? hlopotun> В частности задача изменить процедуру обновления триггеров. Триггеры отдельно от остальных метаданных обновляются что ли? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 14:14 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
программа миграции это что? Вашу базу с ODS 11.2 до 12.0 обновляет что ли? Или это миграция внутренних версий в вашем приложении ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 14:17 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Окно есть. Триггеры обновляются вместе с остальными метаданными. Но процедуры которые обновляют индексы, хранимые процедуры и прочие метаданные разделены. Собственно поэтому и возникла необходимость править. Внутри довольно много сложной логики т.к. обновление может происходить с различных версий старой программы на последнюю. Всё в принципе нормально работает, но иногда вылазят проблеммы. Напримет при накатывании уникальных индексов обнаруживаются дуплицированные данные итп. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 15:34 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
Симонов Денис программа миграции это что? Вашу базу с ODS 11.2 до 12.0 обновляет что ли? Или это миграция внутренних версий в вашем приложении это миграция внутренних версий. Но в перспективе и между ODS тоже т.к. готовится переход с FB 2.5.9 na FB3.n. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 15:35 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotun> Триггеры обновляются вместе с остальными метаданными. Если соблюдать очередность, то проблем быть не должно. > при накатывании уникальных индексов обнаруживаются > дуплицированные данные итп. Какое это имеет отношение к триггерам? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 15:41 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotun Но в перспективе и между ODS тоже т.к. готовится переход с FB 2.5.9 na FB3.n. А смысл мигрировать на 3.0, если уже есть 4.0? Скоро уже первый корректировочный релиз будет ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 16:35 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам hlopotun> Триггеры обновляются вместе с остальными метаданными. ....... Какое это имеет отношение к триггерам? к триггерам никакого но с их обновлением тоже возникали проблемы (не всегда происходило обновление). Проблемма была не в ошибках а в логике обновления. Её и надо изменять. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 17:59 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
Симонов Денис hlopotun Но в перспективе и между ODS тоже т.к. готовится переход с FB 2.5.9 na FB3.n. А смысл мигрировать на 3.0, если уже есть 4.0? Скоро уже первый корректировочный релиз будет тут куча внутренних фреймворков которые к 4й версии не адаптированы и ещё даже не начинали тестироваться с ней. На 4ю версию походу перейдём когда уже будет готова 5я версия. Тут большой продукт, всё медленно происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 18:02 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotun> к триггерам никакого hlopotun> Проблемма была ... в логике обновления. hlopotun> Её и надо изменять. Я даже не знаю, что тебе сказать. Если логика неправильная, то её надо исправить на правильную. Внезапно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 19:49 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotun процедуры которые обновляют индексы, хранимые процедуры и прочие метаданные разделены. Собственно поэтому и возникла необходимость править. Внутри довольно много сложной логики т.к. обновление может происходить с различных версий старой программы на последнюю. IBEScript.dll, и вперёд. DB Comparer из IBExpert -> скрипт обновления. У меня ПК идет набор скриптов, если надо - накатываются последовательно все версии, с нужной по текущую. В базе хранится № текущей версии структуры. Столько лет уже схема работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 21:36 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
ъъъъъ hlopotun процедуры которые обновляют индексы, хранимые процедуры и прочие метаданные разделены. Собственно поэтому и возникла необходимость править. Внутри довольно много сложной логики т.к. обновление может происходить с различных версий старой программы на последнюю. IBEScript.dll, и вперёд. DB Comparer из IBExpert -> скрипт обновления. У меня ПК идет набор скриптов, если надо - накатываются последовательно все версии, с нужной по текущую. В базе хранится № текущей версии структуры. Столько лет уже схема работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2021, 21:36 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotun Гаджимурадов Рустам hlopotun> Триггеры обновляются вместе с остальными метаданными. ....... Какое это имеет отношение к триггерам? к триггерам никакого но с их обновлением тоже возникали проблемы (не всегда происходило обновление). Проблемма была не в ошибках а в логике обновления. Её и надо изменять. не происходило обновление - это как? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 08:55 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
pastor hlopotun пропущено... к триггерам никакого но с их обновлением тоже возникали проблемы (не всегда происходило обновление). Проблемма была не в ошибках а в логике обновления. Её и надо изменять. не происходило обновление - это как? правильнее сказать не производилось обновление некоторых триггеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 10:22 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
"Хоть пытайте, ставьте к стенке - всё равно не изменить безумных нас"? Вот прямо так и происходило? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 10:27 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
ъъъъъ ъъъъъ пропущено... IBEScript.dll, и вперёд. DB Comparer из IBExpert -> скрипт обновления. У меня ПК идет набор скриптов, если надо - накатываются последовательно все версии, с нужной по текущую. В базе хранится № текущей версии структуры. Столько лет уже схема работает. а если предполагается миграция данных из одних таблиц в другие я так понимаю допиливать скрипты вручную ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 10:36 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotun pastor пропущено... не происходило обновление - это как? правильнее сказать не производилось обновление некоторых триггеров. без сообщений об ошибках? как выяснили? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 11:16 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
вся проблема в том, что в даной программе только частично обновление происходит через скрипты. Исторически так сложилось (софт уже более 20 лет существует и развивается) что к примеру структура таблиц динамически формируется из из структуры обьектов. Раньше это было нужно для работы с таблицами paradox. Сейчас завершается переход от смешаных данных (paradox + firebird) только на firebird. Но полностью отказаться от старого кода возможности нет т.к. ещё не все клиенты мигрировали на полностью основанную на firebird базу. При инсталляции, по мере перевода модулей основной программы на firebird, осуществляется миграция данных из paradox в firebird. Делает это своя программа миграции, которая также вносит необходимые изменения и в метаданные firebird. Программа сначала накатывает скрипт который удаляет индексы и хранимые процедуры которые могут помешать обновлению (т.к. сушествуют зависимости к примеру). Далее делает резервную копию метаданных индексов и хранимых процедур которые в скрипте удаления не присутствуют и удаляет их тоже, далее меняется структура таблиц если это необходимо, производится миграция данных и делее накатывается скрипт создания индексов и хранимых процедур и далее скрипт из резервной копии созданной в начале (тут есть ошибка в очерёдности, по идее надо сначала накатывать скрипт из резервной копии а потом скрипт обновления, т.к. есть вероятность перезаписи новых хранимок старыми из резервной копии но поскольку до сих пор удавалось все хранимки запихивать в скрипт обновления и в скрипт резервной копии ничего не попадало проблема не поправлена. До этого момента обновление триггеров производилось только если производилось изменение структуры таблиц сейчас поставлена задача делать это всегда, т.е. удалять сначала все триггеры и потом из создавать заново при каждой инсталляции. Если это делать двумя скриптами то особых проблем нет, но если по той же схеме как с хранимыми процедурами во возникнет проблема очерёдности создания триггеров т.к. она понятно играет важную роль. Соотв возникает вопрос: Есть ли возможность получая исходный код скриптов из базы сделать это в том же порядке как они туда попадали? Было бы удобно сортировать их по ID но у RDB$TRIGGERS такого ID нет. Можно конечно тупо вызвать этот список в неотсортированном виде и по идее этот порядок должен совпадать с тем порядком в котором они вносились но терзают сомнения будет ли это правильным решением. В данный момент я больше склоняюсь к решению делать всё только через скрипт но было бы интересно прояснить для себя вопрос получения очерёдности создания триггеров. п.с. я понимаю что то что я описал вверху полная лажа с точки зрения правильного обновления метаданных в firebird но сделано это задолго до меня и изменить одним махом не получится. Делать прийдётся постепенно и частями. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 11:43 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotun До этого момента обновление триггеров производилось только если производилось изменение структуры таблиц сейчас поставлена задача делать это всегда, т.е. удалять сначала все триггеры и потом из создавать заново при каждой инсталляции. Зачем тащить их из старой базы? Что мешает создать все заново? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 11:54 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
pastor hlopotun До этого момента обновление триггеров производилось только если производилось изменение структуры таблиц сейчас поставлена задача делать это всегда, т.е. удалять сначала все триггеры и потом из создавать заново при каждой инсталляции. Зачем тащить их из старой базы? Что мешает создать все заново? ничто не мешает, поэтому так и планируется сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 12:01 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
А что за проблема с очередностью создания триггеров? Первый раз о таком слышу. Триггеры вообще чуть ли не самые простые объекты в плане зависимостей, так что создавать их можно скопом в конце и в любом порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 12:15 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotun, триггеры надо создавать в последнюю очередь, так как от них зависимостей нет совсем. А вот сами триггеры могут зависеть от чего угодно. Порядок создания триггеров не важен. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 12:34 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
hlopotunтак и планируется сделать. Ну так делай уже. Это же примитивная работа уровня Search-and-Replace, студент-практикант для неё самое то. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 12:44 |
|
Специфика обновления триггеров в базе данных
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, собственно и делаем :) Не студенты конечно, но кто есть. Топик затеян на случай, вдруг вылезет что то о чём не подумали. Например упоминание о сравнении баз в IB Expert и генерация скрипта синхронизации натолкнуло на интересные мысли где это можно применить. Лучше подискутировать чем потом недочёты править. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2021, 12:53 |
|
|
start [/forum/topic.php?fid=40&msg=40094437&tid=1559947]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 187ms |
0 / 0 |