|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
Привет,мужики. Может кто знает и расскажет. В последней версии Sybase Central действительно рисуется дерево-какая проца вызывает какую или это свист? И тот же вопрос про PowerDesigner. У меня этих инструментов нет,привык к одной старой вещице и предан ей до сих пор,но если эти новинки, действительно, рисуют деревце процедур,придётся о них подумать. Так,что,пожалуйста,те,у кого есть эти инструменты последних моделей-поделитесь инфой. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 10:39 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
Ну во первых тогда уж нужно говорить не про Central, а конкретный плагин для конкретной РСУБД. Для ASA однозначно такого нет и не будет, так как в ASA сама архитектура вызовов ХП динамически интрепретируема и никаких ссылок (dependenced) на используемые обьекты внутри ХП в метаструктуре не сохраняется (фактически ссылка на несуществующий обьект будет определена после того, как процедура будет запущена и выполнение кода дойдет до этого места). Для получения списка задействованных ХП, UDF и триггеров в ASA можно воспользоваться профайлером ХП, который после запуска отмониторит все вызываемые обьекты, покажет их список с указанием кол-вом раз вызовов и временем выполнения и позволит на каждую строчку скрипта отслеженных обьектов так же просмотреть статистику времени выполнения. Здесь как раз достаточно запустить профайлер например, на сессию ISQL, выполнить нужную ХП, остановить профайлер и получить готовый для визуального просмотра и поиска узких мест список вызванных из ХП обьектов, со статистикой их работы. Как с этим обстоят дела у ASE без понятия. Если при компиляции процедур в ASE сохраняется dependenced на используемые обьекты, то дерево вполне можно построить. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 11:40 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
Спасибо ASCRUS! Именно АSE меня и интересует,построить,конечно,можно,вы правы,и поэтому я,как специалист по изобретению велосипедов,хотел бы знать насколько смешна эта новая затея ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 12:10 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
KOLCHOZ_POISTEVENTСпасибо ASCRUS! Именно АSE меня и интересует,построить,конечно,можно,вы правы,и поэтому я,как специалист по изобретению велосипедов,хотел бы знать насколько смешна эта новая затея см. табличку sysdepends... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 13:31 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
Таблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid. Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 14:38 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid. Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос. а что мешает взять следующее?: select object_name(id),object_name(depid) from sysdepends ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 16:57 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid. Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос. При определении вызовов процедур надеяться на sysdepends , мягко говоря, слишком оптимистично. Как правило, половины зависимостей процедур там нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 17:09 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
MasterZiv KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid. Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос. При определении вызовов процедур надеяться на sysdepends , мягко говоря, слишком оптимистично. Как правило, половины зависимостей процедур там нет. а есть альтернатива ? ;) можно конечно пробежаться по syscomments ;) конечно sysdepends не панацея, но, _теоретически_, там должно быть всё корректно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 17:16 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
sybdba MasterZiv KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid. Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос. При определении вызовов процедур надеяться на sysdepends , мягко говоря, слишком оптимистично. Как правило, половины зависимостей процедур там нет. а есть альтернатива ? ;) можно конечно пробежаться по syscomments ;) конечно sysdepends не панацея, но, _теоретически_, там должно быть всё корректно :) а динамический sql оно поймет ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 17:48 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
nik2 sybdba MasterZiv KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid. Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос. При определении вызовов процедур надеяться на sysdepends , мягко говоря, слишком оптимистично. Как правило, половины зависимостей процедур там нет. а есть альтернатива ? ;) можно конечно пробежаться по syscomments ;) конечно sysdepends не панацея, но, _теоретически_, там должно быть всё корректно :) а динамический sql оно поймет ??? оно - это кто ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 17:53 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
sybdbaоно - это кто ? sysdepends ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 17:57 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
nik2а динамический sql оно поймет ??? Ага, и для всех новых объектов автоматически цеплять зависимость с sp_execute? ЛОЛ. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 19:07 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
KOLCHOZ_POSTEVENTПривет,мужики. Может кто знает и расскажет. В последней версии Sybase Central действительно рисуется дерево-какая проца вызывает какую или это свист? И тот же вопрос про PowerDesigner. У меня этих инструментов нет,привык к одной старой вещице и предан ей до сих пор,но если эти новинки, действительно, рисуют деревце процедур,придётся о них подумать. Так,что,пожалуйста,те,у кого есть эти инструменты последних моделей-поделитесь инфой. 1. Не знаю насчет последней версии, юзаю Sybase Central 3.2.0.1963 2. Не знаю насчет PowerDesigner 3. Sybase Central показывает не дерево процедуры, а только непосредственно родителя(ей) (Referenced By) и детей (Referencing) базируясь на таблице sysdepends. 4. Sysdepends ненадежна в том смысле что при создании sps их надо загонять в правильном порядке (что в принципе является хорошим тоном, но очень может быть трудоемко), иначе связи потеряются. 5. Dbartisan (utility Schema Extraction) и Cast Workbench правильно (в порядке вызовов) делают выборку sps базируясь действительно на анализе syscomments. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 19:15 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
sybdbaа есть альтернатива ? ;) можно конечно пробежаться по syscomments ;) Альтернатива только одна -- синтактический разбор текстов процедур и триггеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 19:27 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
SQLBrowser строил такое дерево зависимостей дл процедур. Плюс он имеет визуальный дебагер процедур для ASE. Качал с какого-то французского сайта типа wanadoo.* ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2005, 23:04 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
Да, и в этом смысле он был классный, потому как он реально парсил текст TSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2005, 09:08 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
Приподниму старую тему. sysdepends явно не все связи хранит. Сделал для себя следующим образом: сначала вьюха: Код: sql 1. 2. 3. 4. 5. 6.
дерево процедур строю так: Код: sql 1. 2. 3. 4. 5.
из минусов подхода: если есть процедуры с "таким же именем + суффикс" - так же отобразит = лень доделывать. но тривиальная доработка. Но результата хватает. Аналогично можно построить дерево использования таблиц/полей + таблиц и т.д. Мож кто-то что-то более рациональное по данному направлению делал/видел? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2013, 13:42 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
Mikle83, Чтоб прояснить окончательно ситуацию. При создании процедуры в sysdepends заносятся зависимости данной процедуры только от тех процедур, которые существуют на момент создания данной процедуры. Если какой-то вызываемой процедуры нет на момент создания данной, то данная процедура всё равно создаётся, но в sysdepends зависимости от несуществующей процедуры не заносятся. Об этом выдаётся соотвестствующее предупреждение. Соответственно, решение проблемы может быть простым -- заливать все процедуры только по уровням зависимостей, и при этом, если пересоздаёшь процедуру нижнего уровня, нужно обязательно пересоздать все вызывающие её процедуры, и так далее рекурсивно по дереву вызовов. Но такое решение сложно реализовать на практике. Для одноразового решения такой проблемы я писал достаточно сложную программу Recompile, которая может ранжировать объекты по зависимостям (она сливает из БД нужные объекты, сливает их зависимости, строит ранжированное дерево объектов, и выстраивает код объектов в выходном скрипте уже с учётом рангов -- нижние сначала, верхние -- потом). И кажется я выкладывал эту утилиту в FAQ. Парсить весь код всех процедур, мне кажется, ещё сложнее, по крайней мере слово "парсить" уже подразумевает более высокий уровень сложности. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2013, 16:00 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
MasterZivСоответственно, решение проблемы может быть простым -- заливать все процедуры только по уровням зависимостей, и при этом, если пересоздаёшь процедуру нижнего уровня, нужно обязательно пересоздать все вызывающие её процедуры, и так далее рекурсивно по дереву вызовов. а может быть очень простым - двойная проливка скиптов без заморочек с порядком, зависимостями и т.п. только скрипты должны быть вида "if exists ... drop ... create" ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2013, 16:26 |
|
Дерево процедур на картинке
|
|||
---|---|---|---|
#18+
Это все хорошо, но выше указанный скрипт, помимо процедур, поможет так же депенденси таблиц без изменения скрипта выдернуть. Т.е. по имени таблицы можно получить все объекты, где она запользована... А так же по имени поля при определенной сноровке :) и все делает один скрипт. Правда для полного феншуя его надо немного доработать напильником примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2013, 17:26 |
|
|
start [/forum/topic.php?fid=55&msg=33358814&tid=2009897]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 186ms |
0 / 0 |