获取存储过程、视图、函数中使用的 table 列的列表
Get list of table columns used in a stored procedures, view, functions
我有一个 table,它有 50 列,我想知道在存储过程、视图、函数等中实际使用的列名是什么。有没有我可以使用的查询将 table 名称、使用的列名称和使用它的存储过程名称。
我使用了以下查询,其中 return 仅存储了 proc/view,其中使用了此 table。但我需要此 table、table 名称和存储过程名称中唯一使用的列名称。
SELECT OBJECT_NAME(OBJECT_ID),
definition, *
FROM sys.sql_modules
WHERE definition LIKE '%' + 'tablename ' + '%'
示例:
Table 姓名:
Employee
列:
First Name
Last Name
Age
Email
如果在整个数据库中只使用名字,姓氏,那么它应该只return这两列。
Microsoft 有一个显示对象依赖关系的 sp,名为:sp_depends
EXEC sp_depends 'Employee'
将为您提供所有依赖于 Employee
的对象
有关详细信息,请参阅 link: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');
有关详细信息,请参阅 link https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-sql-referenced-entities-transact-sql
您应该能够找到与这两个功能一起使用的列。
我有一个 table,它有 50 列,我想知道在存储过程、视图、函数等中实际使用的列名是什么。有没有我可以使用的查询将 table 名称、使用的列名称和使用它的存储过程名称。
我使用了以下查询,其中 return 仅存储了 proc/view,其中使用了此 table。但我需要此 table、table 名称和存储过程名称中唯一使用的列名称。
SELECT OBJECT_NAME(OBJECT_ID),
definition, *
FROM sys.sql_modules
WHERE definition LIKE '%' + 'tablename ' + '%'
示例:
Table 姓名:
Employee
列:
First Name
Last Name
Age
Email
如果在整个数据库中只使用名字,姓氏,那么它应该只return这两列。
Microsoft 有一个显示对象依赖关系的 sp,名为:sp_depends
EXEC sp_depends 'Employee'
将为您提供所有依赖于 Employee
的对象有关详细信息,请参阅 link: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');
有关详细信息,请参阅 link https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-sql-referenced-entities-transact-sql
您应该能够找到与这两个功能一起使用的列。