|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
Коллеги, приветствую! Просьба подсказать есть ли кого готовые решения или мысли как массово изменить тело процедур? Задача следующая: Требуется провести аудит по использованию процедур при формировании отчетов. В БД насчитывается около 700 процедур для отчетов. Первое, что пришло в голову это добавить строчку "insert into..." в тело процедуры после begin, но каждую править руками трудозатратно. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 04:05 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
1. Извлечь код нужных процедур в скрипт ([CREATE OR] ALTER PROCEDURE). 2. Обработать полученный скрипт, вставив что положено куда следует. 3. Накатить скрипт на базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 05:04 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
IBExpert, Александр, спасибо. Выполнил извлечение метаданных в IBExpert, но часть процедур экспортировались со следующим видом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Хотя в самой процедуре есть обработка данных. Настройки в IBE ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 06:04 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
JohnyCageТребуется провести аудит по использованию процедур при формировании отчетов. В БД насчитывается около 700 процедур для отчетов. Первое, что пришло в голову это добавить строчку "insert into..." в тело процедуры после begin, но каждую править руками трудозатратно. Спасибо. Что бы потом не править обратно, я бы вызывал не "insert into" а процедуру логирования, передавал бы в нее параметры, типа имя процедуры из которой вызывалось логирование. Тогда в процедуре логирования можно и данные перепихивать в разные места, если потребуется, и включать/выключать логирование на основании состояния генератора/переменной/записи в таблице. Нужно - включил, не нужно - выключил. И это прямо на работающей базе, не меняя метаданных и управление сконцентрировано в одном месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 06:35 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
fraks, Точно. Спасибо, так действительно будет лучше и удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 06:50 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
JohnyCageВыполнил извлечение метаданных в IBExpert, но часть процедур экспортировались со следующим видом: Это заглушки для разруливания зависимостей. Ищи ниже полные определения - они там есть. Вот эту часть нужно выделить и обработать. А если сервер позволяет модифицировать системные таблицы напрямую, то можно просто пробежаться по RDB$PROCEDURES, вытащить RDB$PROCEDURE_SOURCE каждой нужной процедуры, найти в нем первый begin, вставить после него необходимое и апдейтить RDB$PROCEDURE_SOURCE. Затем просто перекомпилировать все процедуры и получить рабочий скрипт. Разумеется, делать это нужно не на рабочей базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 07:07 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
IBExpert, Спасибо. Буду пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 07:23 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
fraks, А случайно не подскажете как получить имя выполняемой процедуры? информации чего-то не нашел... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 10:46 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
Хех, а я-то по названию темы подумал, что она о косметических процедурах для похудания ))) + за отдельную процедуру лога Изнутри процедуры получить ее имя никак нельзя, придется задавать константой ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 11:44 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
Василий №2, Так и думал. Благодарю. Буду тогда использовать совет Александра. (RDB$PROCEDURES) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 12:21 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
JohnyCageТребуется провести аудит по использованию процедур при формировании отчетов. Для этого не требуется изменять тела процедур. Достаточно включить аудит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 12:31 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
Василий №2Изнутри процедуры получить ее имя никак нельзя, придется задавать константой да ладно, а как же MON$CALL_STACK ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2017, 04:10 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
vvvaitда ладно, а как же MON$CALL_STACK К сожалению это не очень работоспособно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2017, 19:22 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
afgm, отнюдь Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2017, 03:11 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovJohnyCageТребуется провести аудит по использованию процедур при формировании отчетов. Для этого не требуется изменять тела процедур. Достаточно включить аудит. Именно! Странно что больше никто не пишет и все изобретают костыли. Изучайте трейс. Это сильная штука. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2017, 09:55 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
vvvaitafgm, отнюдь А теперь потестим это на... не самой экстремальной нагрузке. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2017, 14:46 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
afgm, ну не знаю, лишних 0,5 - 1 мс это критично? может на куче коннектов будет похуже надо пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2017, 15:02 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
vvvaitafgm, ну не знаю, лишних 0,5 - 1 мс это критично? может на куче коннектов будет похуже надо пробовать. Для сложных обработок, где вызывается много процедур оверхед буде очень ощутимый. Да и количество транзакция будет увеличиваться многократно, что может быть даже больнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2017, 19:28 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
vvvait, а вот и пример, показывающий, что многих коннектов не надо Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2017, 19:41 |
|
Изменить тело в процедурах
|
|||
---|---|---|---|
#18+
afgm, ну это и есть 1 мс на вызов ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2017, 21:32 |
|
|
start [/forum/topic.php?fid=40&msg=39533073&tid=1561392]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 174ms |
0 / 0 |