Получить список столбцов таблицы, используемых в хранимых процедурах, представлениях, функциях - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть таблица, которая имеет 50 столбцов, и я хочу выяснить, какие имена столбцов фактически используются в хранимых pro c, представлениях, функциях и т. Д. c. Есть ли какой-либо запрос, который я могу использовать, который будет имя таблицы, имя используемого столбца и имя сохраненного pro c, где он используется.

Я использовал следующий запрос, который возвращает только сохраненный proc / view, где эта таблица используется. Но мне нужно только имя используемого столбца из этой таблицы, имя таблицы и сохраненное имя pro c.

SELECT OBJECT_NAME(OBJECT_ID),
definition, *
FROM sys.sql_modules
WHERE definition LIKE '%' + 'tablename ' + '%'

Пример:

Имя таблицы:

Employee

Столбцы:

First Name
Last Name
Age
Email

Если имя, фамилия используется только в вся база данных, то она должна возвращать только эти два столбца.

1 Ответ

0 голосов
/ 05 мая 2020

У Microsoft есть sp, который отображает объектную зависимость: sp_depends

EXEC sp_depends 'Employee'

Предоставит вам все объекты, которые зависят от Employee

, см. Ссылку для получения дополнительной информации. подробно: https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-depends-transact-sql

Теперь для получения столбцов есть функция sys.dm_sql_referenced_entities () для вывода списка всех столбцов.

SELECT
        referenced_id,
        referenced_entity_name AS table_name,
        referenced_minor_name  AS referenced_column_name,
        is_all_columns_found
    FROM
        sys.dm_sql_referenced_entities ('sp_MyProcOrView', 'OBJECT');

см. ссылку для более подробной информации https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-sql-referenced-entities-transact-sql

Вы сможете найти столбцы, используемые с этими двумя функциями.

...