как найти SP Reference - PullRequest
       23

как найти SP Reference

1 голос
/ 07 октября 2009

Я хочу знать, есть ли ссылка на один SP. В настоящее время я проверяю, используя SP_DEPENDS.

Есть ли другой способ проверить это ...?

Ответы [ 3 ]

3 голосов
/ 07 октября 2009

Если ваши зависимости нарушены, я думаю, что теперь я могу быть уверен только в том, чтобы экспортировать файл SQL со всеми определениями хранимых процедур, а затем искать в файле .sql зависимости с помощью вашего любимого редактора исходного кода.

1 голос
/ 07 октября 2009

Попробуйте:

SELECT OBJECT_NAME(m.object_id), m.*
  FROM SYS.SQL_MODULES m
 WHERE m.definition LIKE N'%my_sp_name%'

Помните, что в SYSCOMMENTS и INFORMATION_SCHEMA.ROUTINES есть столбцы nvarchar (4000). Так что если my_sp_name используется в позиции 3998, он не будет найден. SYSCOMMENTS имеет несколько строк, но ROUTINES усекает.

Ссылка: Список зависимостей объектов SQL Server

0 голосов
/ 09 октября 2009

Я написал этот запрос для поиска «объектов кода» (который включает процедуры, функции, триггеры, представления и все остальное, что припарковано в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...