Я создал таблицу среды разработки для целей тестирования, и есть несколько sp, которые обновляют эту таблицу. Теперь мне нужно отбросить эту таблицу, а также идентифицировать все sp, которые ссылаются на эту таблицу. Мне трудно найти список всех sp. Пожалуйста, предложите какой-нибудь запрос, предполагая, что имя таблицы - 'x', а база данных - sql server 2005.
sql
tsql
sql-server-2005
DJay
источник
источник
Ответы:
Кстати, вот полезный ресурс для этого типа вопросов: Запрос FAQ системного каталога SQL Server
источник
ROUTINE_DEFINITION
наINFORMATION_SCHEMA.ROUTINES
?set @Query = “SELECT * FROM Object_I_Need_To_Find_References…”;
Следующее работает на SQL2008 и выше. Предоставляет список как хранимых процедур, так и функций.
источник
иногда вышеуказанные запросы не дают правильного результата, существует встроенная хранимая процедура, доступная для получения зависимостей таблиц как:
источник
Без запроса можно использовать Sql Server Management Studio.
Найдите таблицу, щелкните правой кнопкой мыши и выберите «Просмотреть зависимости».
РЕДАКТИРОВАТЬ
Но, как сказали комментаторы, это не очень надежно.
источник
Следующий запрос получит все имена хранимых процедур и соответствующее определение этих SP.
источник
Просто имейте в виду, что это также приведет к появлению SP, в которых имя таблицы находится в комментариях или где имя таблицы является подстрокой другого имени таблицы, которое используется. Например, если у вас есть таблицы с именами «test» и «test_2», и вы попытаетесь найти SP с помощью «test», вы получите результаты для обоих.
источник
syscomments
для длинных процедур, поскольку он разбивает определение на блоки по 4000 символов в нескольких строках.sys.sql_modules
избегает этого.sys.sql_modules
вместо него.Приведенный ниже запрос работает только при поиске зависимостей в таблице, а не в столбце:
Однако следующий запрос - лучший вариант, если вы хотите найти всевозможные зависимости, он ничего не упускает. Фактически он дает больше информации, чем требуется.
источник
Это сработает, если вам нужно указать имя таблицы.
источник
В студии управления вы можете просто щелкнуть правой кнопкой мыши по таблице и нажать «Просмотреть зависимости».
чем вы можете увидеть список объектов, которые зависят от вашей таблицы:
источник
У вас есть в основном 2 варианта:
----Опция 1
---- Вариант 2
Эти 2 запроса предоставят вам все хранимые процедуры, которые ссылаются на нужную вам таблицу. Этот запрос основан на двух таблицах sys: sysobjects и syscomments. В sysobjects хранятся все имена ваших объектов БД, включая хранимые процедуры.
В syscomments содержится текст для всех ваших процедур.
Если вы запросите: SELECT * FROM syscomments
У вас будет таблица, содержащая идентификатор, который является сопоставлением с таблицей sysobjects с текстом, содержащимся в хранимых процедурах, в качестве последнего столбца.
источник
Попробуй это
источник