powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск процедуры
25 сообщений из 36, страница 1 из 2
Поиск процедуры
    #39818977
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, добрый вечер.
Подскажите, пожалуйста, есть ли такой запрос, который бы искал: из какой процедуры запускается нужная мне процедура?
То есть у меня есть процедура, я знаю ее название, а какой процедурой она запускается я, к примеру не знаю, однако хотелось бы узнать.
благодарю.
...
Рейтинг: 0 / 0
Поиск процедуры
    #39818979
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
use MyDB;
select * from sys.dm_sql_referencing_entities('MyProcedure', 'object');
...
Рейтинг: 0 / 0
Поиск процедуры
    #39818984
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Код: sql
1.
2.
use MyDB;
select * from sys.dm_sql_referencing_entities('MyProcedure', 'object');



спасибо, правильно ли я понимаю: My procedure - процедура которую я ищу, а object?
...
Рейтинг: 0 / 0
Поиск процедуры
    #39818989
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamainvm
Код: sql
1.
2.
use MyDB;
select * from sys.dm_sql_referencing_entities('MyProcedure', 'object');



спасибо, правильно ли я понимаю: My procedure - процедура которую я ищу, а object?

первый источник информации - help
https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-sql-referencing-entities-transact-sql
...
Рейтинг: 0 / 0
Поиск процедуры
    #39819026
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если по-быстрому и на один раз, то в SSMS "View dependencies".
...
Рейтинг: 0 / 0
Поиск процедуры
    #39819107
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
SELECT * FROM sys.sql_expression_dependencies
WHERE referencing_id = OBJECT_ID(@SqlObjName)

Ключевые поля referencing_id и referenced_id

Можно получить все зависимости в обе стороны.
...
Рейтинг: 0 / 0
Поиск процедуры
    #39819229
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Код: sql
1.
2.
SELECT * FROM sys.sql_expression_dependencies
WHERE referencing_id = OBJECT_ID(@SqlObjName)


Ключевые поля referencing_id и referenced_id

Можно получить все зависимости в обе стороны.

referenced_id не будет заполнено, если используемый объект отсутствовал на момент создания/последнего sp_refresh... referencing объекта

поэтому надежнее использовать referenced_schema_name + referenced_entity_name
...
Рейтинг: 0 / 0
Поиск процедуры
    #39821993
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
L_argo
Код: sql
1.
2.
SELECT * FROM sys.sql_expression_dependencies
WHERE referencing_id = OBJECT_ID(@SqlObjName)

Ключевые поля referencing_id и referenced_id

Можно получить все зависимости в обе стороны.

спасибо, дорогой, мне ваш запрос походу функцию запустил. еще и письмецо на почту со сверкой отправил, потрясающе, а я то думаю что он так долго (10 мин) работает, видимо подробную информацию выдаст........
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822062
Penner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822383
TheRookie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dermama, для случая, когда процедуры располагаются в разных базах

Код: sql
1.
2.
3.
4.
5.
6.
Use another_db
GO
SELECT [name]
FROM sys.objects
WHERE [type] IN ('P') 
AND OBJECT_DEFINITION([object_id]) LIKE '%my_proc%';
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822386
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TheRookiedermama, для случая, когда процедуры располагаются в разных базах

Код: sql
1.
2.
3.
4.
5.
6.
Use another_db
GO
SELECT [name]
FROM sys.objects
WHERE [type] IN ('P') 
AND OBJECT_DEFINITION([object_id]) LIKE '%my_proc%';




для случая, когда процедуры располагаются в разных базах/серверах, в sys.sql_expression_dependencies есть referenced_server_name и referenced_database_name
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822390
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эти конструкции динамику не ловят,
если она используется, то лучше по тексту кода искать
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822549
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критикэти конструкции динамику не ловят,
если она используется, то лучше по тексту кода искать

То есть вот этот запрос мне ничего не запустит?? Хорошо, что процедура просто подгружала информацию ни на что не влияющую, а если бы там UPDATE был бы?

Use another_db
GO
SELECT [name]
FROM sys.objects
WHERE [type] IN ('P')
AND OBJECT_DEFINITION([object_id]) LIKE '%my_proc%';
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822550
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критикэти конструкции динамику не ловят,
если она используется, то лучше по тексту кода искать

Расскажите, пожалуйста, как SELECT мог мне запустить исполнение процедуры? Я пробовал искать зависимости по другим процедурам и подобного не было - была лишь выборка в виде таблицы, а тут, пока я покурить сходил - отчет о том, процедура отработала успешно, да еще отчетик на всю группу выслала.
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822618
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaКритикэти конструкции динамику не ловят,
если она используется, то лучше по тексту кода искать

Расскажите, пожалуйста, как SELECT мог мне запустить исполнение процедуры? Я пробовал искать зависимости по другим процедурам и подобного не было - была лишь выборка в виде таблицы, а тут, пока я покурить сходил - отчет о том, процедура отработала успешно, да еще отчетик на всю группу выслала.
никак, это ваша фантазия
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822626
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKdermamaпропущено...


Расскажите, пожалуйста, как SELECT мог мне запустить исполнение процедуры? Я пробовал искать зависимости по другим процедурам и подобного не было - была лишь выборка в виде таблицы, а тут, пока я покурить сходил - отчет о том, процедура отработала успешно, да еще отчетик на всю группу выслала.
никак, это ваша фантазия

скриншот не могу показывать, однако, стало бы ясно, что фантазии мои настолько же не верны, как верно ваше утверждение.
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822630
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaTaPaKпропущено...

никак, это ваша фантазия

скриншот не могу показывать, однако, стало бы ясно, что фантазии мои настолько же не верны, как верно ваше утверждение.
ладно, это ваша больная фантазия, не внимательность и тд и тп

my_proc
go
SELECT

тоже построит ва отчётик
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822662
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermamaскриншот не могу показывать, однако, стало бы ясно, что фантазии мои настолько же не верны, как верно ваше утверждение.Скриншот вряд ли может показать, что ничего, кроме вышеупомянутого запроса, на сервере не запускалось.

Конечно, внутренности sys.sql_expression_dependencies скрыты, но что бы он что то запускал, очень маловероятно.
В плане там обычные Clustered Index Scan/Seek из таблиц, никаких вызовов кода нет, кроме типичных проверок прав, определения имени текущей базы и тому подобного.
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822669
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE VIEW sys.sql_expression_dependencies AS
	SELECT referencing_id, referencing_minor_id, referencing_class, referencing_class_desc,
			is_schema_bound_reference, referenced_class, referenced_class_desc,
			referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name,
			referenced_id, referenced_minor_id, is_caller_dependent, is_ambiguous
	FROM sys.sql_expression_dependencies$
	WHERE has_perms_by_name(quotename(db_name()), 'DATABASE', 'VIEW DEFINITION') = 1



что там в системном объекте уже хз, но вызов это фантастика
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822672
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKчто там в системном объекте уже хзДа, я и говорю, скрыто. Но план показывает все обращения (блин, и зачем скрывали?)
Не, можно, конечно, посмотреть в присоединённых ресурсах (опять же, и зачем скрывали?), но неохота.
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822768
dermama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKalexeyvg,

Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE VIEW sys.sql_expression_dependencies AS
	SELECT referencing_id, referencing_minor_id, referencing_class, referencing_class_desc,
			is_schema_bound_reference, referenced_class, referenced_class_desc,
			referenced_server_name, referenced_database_name, referenced_schema_name, referenced_entity_name,
			referenced_id, referenced_minor_id, is_caller_dependent, is_ambiguous
	FROM sys.sql_expression_dependencies$
	WHERE has_perms_by_name(quotename(db_name()), 'DATABASE', 'VIEW DEFINITION') = 1



что там в системном объекте уже хз, но вызов это фантастика

Я новичек в 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: Успешное завершение процедуры название_моей _процедуры.
(смотрю скриншот)

Товарищи, я ни в коем случае не сомневаюсь в вашей компетенции, однако есть вероятность того, что вы о таком могли просто не знать?
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822773
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dermama,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
--1.
CREATE OR ALTER PROCEDURE dbo.Bullshit
As
	SELECT 'I AM bullshit'
GO


DECLARE @SqlObjName varchar (100)
SET @SqlObjName = '[dbo].[Bullshit]'

SELECT *
FROM sys.sql_expression_dependencies
WHERE referencing_id = OBJECT_ID(@SqlObjName)

GO
--2
dbo.Bullshit



первую половину я могу запускать целый день и наверное серевр таки решит что я хочу что то выполнить.
А у вас где то написано ака 2 пункт
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822818
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё это не учитывает злобных злонамеренных извращенцев.
А таковые, к сожалению, встречаются.

Например, перечень запускаемых хранимых процедур может хранится в таблице, читаться оттуда и запускаться через exec или sp_executesql.

Или, например, как вам такое:
Код: sql
1.
2.
3.
4.
Declare @sql as varchar(max)

Select @sql = Cast (0x50726F635F3031 as varchar(max))
Exec (@sql)


Почти, млять, реальный кусок из реальной программы, но в реальности всё еще жопнее!
Там формируется кусок текста для динамического sql, причем в нем могут запускаться хранимки вида proc_tools, proc_prepare, proc_exec, причем эти 'prepare' и т.д. формируются через replace, по статически заданному куску, а 'proc', значит, замаскированы, см. выше, чтобы этим самым реплейсом случайно не ловились.

И вот скажите мне, друзья, какими словами можно выразить благодарность разработчику?

... И это еще не учтен вариант формирование самих sp динамически...

Можно, я не буду продолжать?
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822843
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вот скажите мне, друзья, какими словами можно выразить благодарность разработчику?Он реально преуспел в обфускации.
Видимо жадный заказчик его напарил, но он в долгу не остался.
Теперь заказчик вдвойне платит другому разработчику и доводит его до белого каления.
...
Рейтинг: 0 / 0
Поиск процедуры
    #39822848
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggsterИли, например, как вам такое:Скобки у EXEC - лишние.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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