获取用于存储过程,视图,函数的表列的列表

问题描述 投票:0回答:1

我有一个包含50列的表,我想找出,存储过程,视图,函数等中实际使用的列名是什么。我可以使用任何查询来查询表名,使用的列名以及使用的存储过程名称。

我使用了以下查询,该查询仅返回使用此表的存储过程/视图。但是我需要此表中唯一使用的列名,表名和存储的过程名。

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

示例:

表名:

Employee

专栏:

First Name
Last Name
Age
Email

如果在整个数据库中使用“姓氏,仅姓氏”,则它仅应返回这两列。

sql sql-server tsql database-administration
1个回答
0
投票

Microsoft有一个sp,显示了对象依赖关系,称为:sp_depends

EXEC sp_depends '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

您应该能够找到用于这两个功能的列。

© www.soinside.com 2019 - 2024. All rights reserved.