Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Товарищи, добрый вечер. Подскажите, пожалуйста, есть ли такой запрос, который бы искал: из какой процедуры запускается нужная мне процедура? То есть у меня есть процедура, я знаю ее название, а какой процедурой она запускается я, к примеру не знаю, однако хотелось бы узнать. благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 21:38 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 21:51 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
invm Код: sql 1. 2. спасибо, правильно ли я понимаю: My procedure - процедура которую я ищу, а object? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 21:56 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
dermamainvm Код: sql 1. 2. спасибо, правильно ли я понимаю: My procedure - процедура которую я ищу, а object? первый источник информации - help https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-sql-referencing-entities-transact-sql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 22:06 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Если по-быстрому и на один раз, то в SSMS "View dependencies". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2019, 00:21 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. Ключевые поля referencing_id и referenced_id Можно получить все зависимости в обе стороны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2019, 09:50 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
L_argo Код: sql 1. 2. Ключевые поля referencing_id и referenced_id Можно получить все зависимости в обе стороны. referenced_id не будет заполнено, если используемый объект отсутствовал на момент создания/последнего sp_refresh... referencing объекта поэтому надежнее использовать referenced_schema_name + referenced_entity_name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2019, 12:33 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
L_argo Код: sql 1. 2. Ключевые поля referencing_id и referenced_id Можно получить все зависимости в обе стороны. спасибо, дорогой, мне ваш запрос походу функцию запустил. еще и письмецо на почту со сверкой отправил, потрясающе, а я то думаю что он так долго (10 мин) работает, видимо подробную информацию выдаст........ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2019, 22:56 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
dermama, для случая, когда процедуры располагаются в разных базах Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2019, 16:36 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
TheRookiedermama, для случая, когда процедуры располагаются в разных базах Код: sql 1. 2. 3. 4. 5. 6. для случая, когда процедуры располагаются в разных базах/серверах, в sys.sql_expression_dependencies есть referenced_server_name и referenced_database_name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2019, 16:38 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
эти конструкции динамику не ловят, если она используется, то лучше по тексту кода искать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2019, 16:45 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Критикэти конструкции динамику не ловят, если она используется, то лучше по тексту кода искать То есть вот этот запрос мне ничего не запустит?? Хорошо, что процедура просто подгружала информацию ни на что не влияющую, а если бы там UPDATE был бы? Use another_db GO SELECT [name] FROM sys.objects WHERE [type] IN ('P') AND OBJECT_DEFINITION([object_id]) LIKE '%my_proc%'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2019, 22:14 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Критикэти конструкции динамику не ловят, если она используется, то лучше по тексту кода искать Расскажите, пожалуйста, как SELECT мог мне запустить исполнение процедуры? Я пробовал искать зависимости по другим процедурам и подобного не было - была лишь выборка в виде таблицы, а тут, пока я покурить сходил - отчет о том, процедура отработала успешно, да еще отчетик на всю группу выслала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2019, 22:16 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
dermamaКритикэти конструкции динамику не ловят, если она используется, то лучше по тексту кода искать Расскажите, пожалуйста, как SELECT мог мне запустить исполнение процедуры? Я пробовал искать зависимости по другим процедурам и подобного не было - была лишь выборка в виде таблицы, а тут, пока я покурить сходил - отчет о том, процедура отработала успешно, да еще отчетик на всю группу выслала. никак, это ваша фантазия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 09:06 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
TaPaKdermamaпропущено... Расскажите, пожалуйста, как SELECT мог мне запустить исполнение процедуры? Я пробовал искать зависимости по другим процедурам и подобного не было - была лишь выборка в виде таблицы, а тут, пока я покурить сходил - отчет о том, процедура отработала успешно, да еще отчетик на всю группу выслала. никак, это ваша фантазия скриншот не могу показывать, однако, стало бы ясно, что фантазии мои настолько же не верны, как верно ваше утверждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 09:23 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
dermamaTaPaKпропущено... никак, это ваша фантазия скриншот не могу показывать, однако, стало бы ясно, что фантазии мои настолько же не верны, как верно ваше утверждение. ладно, это ваша больная фантазия, не внимательность и тд и тп my_proc go SELECT тоже построит ва отчётик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 09:27 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
dermamaскриншот не могу показывать, однако, стало бы ясно, что фантазии мои настолько же не верны, как верно ваше утверждение.Скриншот вряд ли может показать, что ничего, кроме вышеупомянутого запроса, на сервере не запускалось. Конечно, внутренности sys.sql_expression_dependencies скрыты, но что бы он что то запускал, очень маловероятно. В плане там обычные Clustered Index Scan/Seek из таблиц, никаких вызовов кода нет, кроме типичных проверок прав, определения имени текущей базы и тому подобного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 10:14 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Код: sql 1. 2. 3. 4. 5. 6. 7. что там в системном объекте уже хз, но вызов это фантастика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 10:26 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
TaPaKчто там в системном объекте уже хзДа, я и говорю, скрыто. Но план показывает все обращения (блин, и зачем скрывали?) Не, можно, конечно, посмотреть в присоединённых ресурсах (опять же, и зачем скрывали?), но неохота. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 10:38 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
TaPaKalexeyvg, Код: sql 1. 2. 3. 4. 5. 6. 7. что там в системном объекте уже хз, но вызов это фантастика Я новичек в SQL, но отличить выборку и запуск процедуры я в состоянии. Я запустил запрос DECLARE @SqlObjName varchar (100) SET @SqlObjName = '[схема].[имя_моей_процедуры]' SELECT * FROM sys.sql_expression_dependencies WHERE referencing_id = OBJECT_ID(@SqlObjName) запрос начала выполняться, прошло секунд 30, думаю, ну ладно, пойду покурю, может много зависимостей - процедура большая. Пришел с перекура, через 10 минут: Как результат в диалоговом окне, где обычно появляется выборка запроса - Messages (1 row affected) 2019-06-03 22:20:40.100: название_моей процедуры: Running: Старт процедуры база.схема.название процедуры 2019-06-03 22:20:40.223: --тут запустил входящую процедуру в состав предыдущей всего 10 пунктов. . . . . . . . . 2019-06-03 22:31:11.763: название_моей процедуры: END: Успешное завершение процедуры название_моей _процедуры. (смотрю скриншот) Товарищи, я ни в коем случае не сомневаюсь в вашей компетенции, однако есть вероятность того, что вы о таком могли просто не знать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 12:37 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
dermama, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. первую половину я могу запускать целый день и наверное серевр таки решит что я хочу что то выполнить. А у вас где то написано ака 2 пункт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 12:42 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Всё это не учитывает злобных злонамеренных извращенцев. А таковые, к сожалению, встречаются. Например, перечень запускаемых хранимых процедур может хранится в таблице, читаться оттуда и запускаться через exec или sp_executesql. Или, например, как вам такое: Код: sql 1. 2. 3. 4. Почти, млять, реальный кусок из реальной программы, но в реальности всё еще жопнее! Там формируется кусок текста для динамического sql, причем в нем могут запускаться хранимки вида proc_tools, proc_prepare, proc_exec, причем эти 'prepare' и т.д. формируются через replace, по статически заданному куску, а 'proc', значит, замаскированы, см. выше, чтобы этим самым реплейсом случайно не ловились. И вот скажите мне, друзья, какими словами можно выразить благодарность разработчику? ... И это еще не учтен вариант формирование самих sp динамически... Можно, я не буду продолжать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 13:33 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
И вот скажите мне, друзья, какими словами можно выразить благодарность разработчику?Он реально преуспел в обфускации. Видимо жадный заказчик его напарил, но он в долгу не остался. Теперь заказчик вдвойне платит другому разработчику и доводит его до белого каления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 14:21 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
uaggsterИли, например, как вам такое:Скобки у EXEC - лишние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 14:28 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
iapuaggsterИли, например, как вам такое:Скобки у EXEC - лишние. чего? там же EXEC (string) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 14:36 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
TaPaKiapпропущено... Скобки у EXEC - лишние. чего? там же EXEC (string)EXEC @SQL, где @SQL состоит из имени процедуры. Кстати, в этом случае никакого динамического SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 14:39 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
iapTaPaKпропущено... чего? там же EXEC (string)EXEC @SQL, где @SQL состоит из имени процедуры. Кстати, в этом случае никакого динамического SQL. Будет работать хоть EXEC (@str) хоть EXEC @str ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 14:42 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
TaPaKiapпропущено... EXEC @SQL, где @SQL состоит из имени процедуры. Кстати, в этом случае никакого динамического SQL. Будет работать хоть EXEC (@str) хоть EXEC @strА если нет разницы, то зачем...?? © ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:03 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
L_argoИ вот скажите мне, друзья, какими словами можно выразить благодарность разработчику?Он реально преуспел в обфускации. Видимо жадный заказчик его напарил, но он в долгу не остался. Теперь заказчик вдвойне платит другому разработчику и доводит его до белого каления. Самое забавное - это не то, чтобы обфускация. "Они так видят"(С) ... лучше б впрямую обфусцировали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:28 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
uaggster, типа попытка работать в привычной парадигме ООП любой ценой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 18:08 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, Видимо, в частности - да. Помните историю с баша, о разборе текстовых данных на java? Ну, дескать, что относиться к этому нужно как к уборке квартиры после пьяной студенческой вечеринки: - Что? На антресолях насрали? Ну что за люди! Еще хранимая процедура может вызываться другой хранимой процедурой через севис брокер, путем, собственно, отправки сообщения брокеру. И тут, как вы понимаете, имя вызываемой процедуры вообще фигурировать не будет. А еще - путем запуска задания агента. Или вызываться в коде хранимки на CLR. Или в триггере на таблицу, изменения в которой производятся в хранимке. Или, например, в триггере уровня базы данных, или уровня сервера. Но самое мое любимое - это, безусловно, временные хранимые процедуры. Ну, т.е. в хранимке фигурирует вызов некой временной хранимой процедуры, но вот сама временная хранимая процедура, куда может быть понапихано что угодно, создается логон триггером, например. Ну или вообще - с клиента. А использование sql-инъекции в "мирных целях" вы видели? Я, например, видел. Млять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 22:13 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
Не могу, остановиться, простите, распирает меня! Как вам такой шедевр зависимостей. Кусок, правда, модельный, но для понимания идеи - достаточно. Сначала, они сделали так, цитирую фактически с сохранением оригинального синтаксиса: Код: 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. А потом элегантно разбросали везде, где смогли, щедрой рукой, т.с., по всем процедуркам: Код: sql 1. 2. 3. Причем апдейты иногда очень даже зубодробительные! И всё в таком духе. (это я сильно упрощенно, для иллюстрации) Вот вы мне скажите: 1. Кем надо быть, чтобы такое творить? 2. Кто этих uebkoff научил так делать? 3. И какой, какой в этом смысл, а? Ну, кроме того, чтобы потом сопровождающих задолбали в ноль. Объясните, может я чего то не понимаю? Это может в кукбоке каком есть или еще что? Должно же быть рациональное зерно какое-то, кроме шизофрении, а? Прошу прощения за экспрессию. Но вопросы не риторические, мне интересно! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 11:21 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
uaggster, тут вопрос что делает этот Proc_01. Могу придумать что для отладки что-то нарисовали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 11:39 |
|
||
|
Поиск процедуры
|
|||
|---|---|---|---|
|
#18+
TaPaK, нет, это я так, для примера нарисовал. Триггер - реальная большая хранимка, с разветвленной логикой, которая учитывает контекст сессии и т.д. И причем, если б это одна точка такая была - это как то понятно было бы. Нет же! Там с десяток таких вьюх, c INSTEAD OF триггерами, частью - поверх статических списков, частью - поверх таблиц, причем вьюхи - потому что содержимое этих таблиц фильтруется по имени пользователя или по принадлежности к роли (не 2017, row security нету). Нет! Это используется как самостоятельный прием программирования! Они, значит, делают апдейт каких то там столбцов в этих вьюхах, в хранимках, я имею ввиду, делают, а, зачастую - прямо с клиента, прямым запросом, а внутри триггера, значит, анализируют то, что прилетело в inserted, и что-то там дальше делают. Я так понимаю, господа просто не умеют табличных типов. Ну, или не хотят уметь. Но мне интересно, откуда такая зараза могла приползти? Прием, в смысле. В оракуле так делают? Или в постгрессе? Кто надоумил то? Причем, вот беда, я кроме как "плохо поддерживаемо" никаких аргументов привести не могу. Не хватает знаний. Я не разработчик, я сисадмин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 12:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1687723]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 422ms |

| 0 / 0 |
