【问题标题】:Get list of table columns used in a stored procedures, view, functions获取存储过程、视图、函数中使用的表列列表
【发布时间】:2020-04-29 23:02:11
【问题描述】:

我有一个有 50 列的表,我想知道,存储过程、视图、函数等中实际使用的列名是什么。有没有我可以使用的查询来查询表名、使用的列名称和使用它的存储过程名称。

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

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

例子:

表名:

Employee

列:

First Name
Last Name
Age
Email

如果 First name, Last name only 在整个数据库中使用,那么它应该只返回这两个列。

【问题讨论】:

标签: sql sql-server tsql database-administration


【解决方案1】:

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

您应该能够找到与这两个功能一起使用的列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2010-09-12
    • 2015-05-15
    • 1970-01-01
    相关资源
    最近更新 更多