Я написал этот запрос для поиска «объектов кода» (который включает процедуры, функции, триггеры, представления и все остальное, что припарковано в sys.sql_modules) для выбранной строки, будь то таблица, столбец, комментарий или имя хранимой процедуры , Я вполне уверен, что это будет учитывать возможность "разделения" строки на отдельные страницы данных.
Возвращаются столбцы:
- Схема владения
- Имя объекта
- Тип объекта (согласно type_desc в sys.objects)
- Длина кода в байтах (иногда помогает узнать, насколько большой код)
- Фактический код, содержащий строку
Это будет только список объектов, где присутствует строка. Если вы выполните поиск, скажем «Объявить», вы, вероятно, получите все процедуры и функции в базе данных. Это также не оценивает, как используется строка. Если имя вашей процедуры присутствует (только) в комментарии в другой процедуре, эта процедура будет указана в списке.
Короче говоря, это отправная точка. Он покажет, где находится ваша строка; Затем вы должны войти и рассмотреть каждый случай, чтобы определить, как он используется.
DECLARE @SearchText varchar(100)
SET @SearchText = 'YourTextHere'
SELECT
schema_name(ob.schema_id) SchemaName
,ob.name
,ob.type_desc
,len(mo.definition) CodeLength
,mo.definition
from sys.sql_modules mo
inner join .sys.objects ob
on ob.object_id = mo.object_id
where mo.definition like '%' + @SearchText + '%'
order by
case schema_name(ob.schema_id)
when 'dbo' then 'A'
else 'B' + str(ob.schema_id, 10)
end
,ob.type_desc
,ob.name