sql - 获取存储过程、视图、函数中使用的表列列表
问题描述
我有一个有 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 用于整个数据库,那么它应该只返回这两个列。
解决方案
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');
您应该能够找到与这两个功能一起使用的列。
推荐阅读
- forms - Symfony 表单事件 POST_SUBMIT
- android - macOS 上的 sdkmanager 与 Java11 java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
- android - 如何解决“连接到 ui 超时”?
- c# - 在 C# 中返回多个值的函数的方法签名
- java - 方法不会覆盖其超类中的方法并且无法解析符号
- amazon-web-services - AWS API Gateway 和静态 HTML:“由于配置错误,执行失败:statusCode 应该是请求模板中定义的整数”
- android - 仅影响华为设备的奇怪崩溃 - Android 10 - android.view.InflateException
- automation - 如何在 Cucumber 自动化中将数据从 Config 文件传递到数据表
- kivy - Kivy 编译应用关闭后出现问题
- lua - lua 匹配字符串中标签后的所有内容