Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Дерево процедур на картинке / 22 сообщений из 22, страница 1 из 1
01.11.2005, 10:39
    #33354586
KOLCHOZ_POSTEVENT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
Привет,мужики.
Может кто знает и расскажет.
В последней версии Sybase Central действительно рисуется дерево-какая проца вызывает какую или это свист?
И тот же вопрос про PowerDesigner.
У меня этих инструментов нет,привык к одной старой вещице и предан ей до сих пор,но если эти новинки, действительно, рисуют деревце процедур,придётся о них подумать.
Так,что,пожалуйста,те,у кого есть эти инструменты последних моделей-поделитесь инфой.
...
Рейтинг: 0 / 0
01.11.2005, 11:40
    #33354814
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
Ну во первых тогда уж нужно говорить не про Central, а конкретный плагин для конкретной РСУБД. Для ASA однозначно такого нет и не будет, так как в ASA сама архитектура вызовов ХП динамически интрепретируема и никаких ссылок (dependenced) на используемые обьекты внутри ХП в метаструктуре не сохраняется (фактически ссылка на несуществующий обьект будет определена после того, как процедура будет запущена и выполнение кода дойдет до этого места). Для получения списка задействованных ХП, UDF и триггеров в ASA можно воспользоваться профайлером ХП, который после запуска отмониторит все вызываемые обьекты, покажет их список с указанием кол-вом раз вызовов и временем выполнения и позволит на каждую строчку скрипта отслеженных обьектов так же просмотреть статистику времени выполнения. Здесь как раз достаточно запустить профайлер например, на сессию ISQL, выполнить нужную ХП, остановить профайлер и получить готовый для визуального просмотра и поиска узких мест список вызванных из ХП обьектов, со статистикой их работы.

Как с этим обстоят дела у ASE без понятия. Если при компиляции процедур в ASE сохраняется dependenced на используемые обьекты, то дерево вполне можно построить.
...
Рейтинг: 0 / 0
01.11.2005, 12:10
    #33354917
KOLCHOZ_POISTEVENT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
Спасибо ASCRUS!
Именно АSE меня и интересует,построить,конечно,можно,вы правы,и поэтому я,как специалист по изобретению велосипедов,хотел бы знать насколько смешна эта новая затея
...
Рейтинг: 0 / 0
01.11.2005, 13:31
    #33355138
sybdba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
KOLCHOZ_POISTEVENTСпасибо ASCRUS!
Именно АSE меня и интересует,построить,конечно,можно,вы правы,и поэтому я,как специалист по изобретению велосипедов,хотел бы знать насколько смешна эта новая затея

см. табличку sysdepends...
...
Рейтинг: 0 / 0
01.11.2005, 14:38
    #33355403
KOLCHOZ_POSTEVENT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
Таблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid.
Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос.
...
Рейтинг: 0 / 0
01.11.2005, 16:57
    #33355826
sybdba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid.
Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос.

а что мешает взять следующее?:
select object_name(id),object_name(depid) from sysdepends
...
Рейтинг: 0 / 0
01.11.2005, 17:09
    #33355875
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid.
Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос.

При определении вызовов процедур надеяться на sysdepends , мягко говоря, слишком оптимистично. Как правило, половины зависимостей процедур там нет.
...
Рейтинг: 0 / 0
01.11.2005, 17:16
    #33355898
sybdba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
MasterZiv KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid.
Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос.

При определении вызовов процедур надеяться на sysdepends , мягко говоря, слишком оптимистично. Как правило, половины зависимостей процедур там нет.
а есть альтернатива ? ;)
можно конечно пробежаться по syscomments ;)

конечно sysdepends не панацея, но, _теоретически_, там должно быть всё корректно :)
...
Рейтинг: 0 / 0
01.11.2005, 17:48
    #33355996
nik2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
sybdba MasterZiv KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid.
Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос.

При определении вызовов процедур надеяться на sysdepends , мягко говоря, слишком оптимистично. Как правило, половины зависимостей процедур там нет.
а есть альтернатива ? ;)
можно конечно пробежаться по syscomments ;)

конечно sysdepends не панацея, но, _теоретически_, там должно быть всё корректно :)
а динамический sql оно поймет ???
...
Рейтинг: 0 / 0
01.11.2005, 17:53
    #33356008
sybdba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
nik2 sybdba MasterZiv KOLCHOZ_POSTEVENTТаблица sysdepends-плоская,как планета Земля,а мне нужно дерево,готовое,склееное с sysobjects по полю id,показывающее куда от строчки к строчки ведут depid.
Вот прослышал,что что-й-то есть,а вправду ли есть?Весь вопрос.

При определении вызовов процедур надеяться на sysdepends , мягко говоря, слишком оптимистично. Как правило, половины зависимостей процедур там нет.
а есть альтернатива ? ;)
можно конечно пробежаться по syscomments ;)

конечно sysdepends не панацея, но, _теоретически_, там должно быть всё корректно :)
а динамический sql оно поймет ???

оно - это кто ?
...
Рейтинг: 0 / 0
01.11.2005, 17:57
    #33356019
nik2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
sybdbaоно - это кто ?
sysdepends
...
Рейтинг: 0 / 0
01.11.2005, 19:07
    #33356158
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
nik2а динамический sql оно поймет ???
Ага, и для всех новых объектов автоматически цеплять зависимость с sp_execute? ЛОЛ.
...
Рейтинг: 0 / 0
01.11.2005, 19:15
    #33356169
Zhora
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
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.
...
Рейтинг: 0 / 0
01.11.2005, 19:27
    #33356179
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
sybdbaа есть альтернатива ? ;)
можно конечно пробежаться по syscomments ;)


Альтернатива только одна -- синтактический разбор текстов процедур и триггеров.
...
Рейтинг: 0 / 0
01.11.2005, 23:04
    #33356344
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
SQLBrowser строил такое дерево зависимостей дл процедур. Плюс он имеет визуальный дебагер процедур для ASE. Качал с какого-то французского сайта типа wanadoo.*
...
Рейтинг: 0 / 0
02.11.2005, 09:08
    #33356583
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
Да, и в этом смысле он был классный, потому как он реально парсил текст TSQL.
...
Рейтинг: 0 / 0
02.11.2005, 21:01
    #33358814
Zhora
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
10.12.2013, 13:42
    #38495488
Mikle83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
Приподниму старую тему.
sysdepends явно не все связи хранит.

Сделал для себя следующим образом:
сначала вьюха:
Код: sql
1.
2.
3.
4.
5.
6.
Create view sa_syscomments
as
select 
  sc.id, sc.text + IsNull(Left(scnext.text,50),'') as text
from syscomments sc noholdlock
    left join syscomments scnext on scnext.id=sc.id and scnext.colid = sc.colid+1



дерево процедур строю так:
Код: sql
1.
2.
3.
4.
5.
select DISTINCT soRef.name + '[' + soRef.type + ']' as SPParent, soSP.name + '[' + soSP.type + ']'
from sysobjects soSP
    join sa_syscomments sc on sc.id <> so.SPid and sc.text like '% ' + soSP.name + '%'
    join sysobjects soRef on soRef.id = sc.id and soRef.name <> so.name
where soSP.type = 'P'



из минусов подхода: если есть процедуры с "таким же именем + суффикс" - так же отобразит = лень доделывать. но тривиальная доработка. Но результата хватает. Аналогично можно построить дерево использования таблиц/полей + таблиц и т.д.

Мож кто-то что-то более рациональное по данному направлению делал/видел?
...
Рейтинг: 0 / 0
11.12.2013, 16:00
    #38497221
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
Mikle83,

Чтоб прояснить окончательно ситуацию.

При создании процедуры в sysdepends заносятся зависимости данной процедуры только от тех процедур, которые
существуют на момент создания данной процедуры. Если какой-то вызываемой процедуры нет на момент создания данной, то данная процедура всё равно создаётся, но в sysdepends зависимости от несуществующей процедуры не заносятся. Об этом выдаётся соотвестствующее предупреждение.

Соответственно, решение проблемы может быть простым -- заливать все процедуры только по уровням зависимостей, и при этом, если пересоздаёшь процедуру нижнего уровня, нужно обязательно пересоздать все вызывающие её процедуры, и так далее рекурсивно по дереву вызовов.

Но такое решение сложно реализовать на практике.

Для одноразового решения такой проблемы я писал достаточно сложную программу Recompile, которая может ранжировать
объекты по зависимостям (она сливает из БД нужные объекты, сливает их зависимости, строит ранжированное дерево объектов, и выстраивает код объектов в выходном скрипте уже с учётом рангов -- нижние сначала, верхние -- потом).
И кажется я выкладывал эту утилиту в FAQ.

Парсить весь код всех процедур, мне кажется, ещё сложнее, по крайней мере слово "парсить" уже подразумевает более высокий уровень сложности.
...
Рейтинг: 0 / 0
11.12.2013, 16:26
    #38497293
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
MasterZivСоответственно, решение проблемы может быть простым -- заливать все процедуры только по уровням зависимостей, и при этом, если пересоздаёшь процедуру нижнего уровня, нужно обязательно пересоздать все вызывающие её процедуры, и так далее рекурсивно по дереву вызовов.


а может быть очень простым - двойная проливка скиптов без заморочек с порядком, зависимостями и т.п.
только скрипты должны быть вида "if exists ... drop ... create"
...
Рейтинг: 0 / 0
12.12.2013, 17:26
    #38498973
Mikle83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дерево процедур на картинке
Это все хорошо, но выше указанный скрипт, помимо процедур, поможет так же депенденси таблиц без изменения скрипта выдернуть. Т.е. по имени таблицы можно получить все объекты, где она запользована... А так же по имени поля при определенной сноровке :)
и все делает один скрипт. Правда для полного феншуя его надо немного доработать напильником примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 [code=sql]
select Distinct
  scColumn.id, so.name, so.type
from sa_syscomments scColumn
  join sysobjects so on so.id = scColumn.id
  where scColumn.text like '%OBJECTNAME%'
    and substring(scColumn.text, patindex('%OBJECTNAME%', scColumn.text) -1, 1) not like '[A-Za-z0-9_-]'
    and substring(scColumn.text, patindex('%OBJECTNAME%', scColumn.text) + LEN('OBJECTNAME'), 1) not like '[A-Za-z0-9_-]'

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


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