导读:本期聚焦于小伙伴创作的《如何查看SQL存储过程的依赖关系_利用sys.dm_sql_referencing_entities》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何查看SQL存储过程的依赖关系_利用sys.dm_sql_referencing_entities》有用,将其分享出去将是对创作者最好的鼓励。

在SQL Server的数据库管理中,存储过程往往会和其他数据库对象产生关联,比如被其他存储过程调用、被视图引用或者被触发器使用。当我们需要修改某个存储过程时,提前了解它的依赖关系能避免误操作导致其他关联对象报错。系统动态管理函数sys.dm_sql_referencing_entities就是专门用于查询指定对象被哪些其他对象引用的工具,能快速帮我们梳理存储过程的依赖情况。

如何查看SQL存储过程的依赖关系_利用sys.dm_sql_referencing_entities

sys.dm_sql_referencing_entities函数基本语法

该函数的语法结构如下:

sys.dm_sql_referencing_entities (
    'schema_name.object_name',
    'object_type'
)

两个参数的含义分别是:

  • schema_name.object_name:要查询的对象的完整名称,包含架构名和对象名,比如dbo.usp_GetUser。
  • object_type:要查询的对象的类型,存储过程对应的类型是OBJECT,如果是其他类型可以对应调整,比如视图是VIEW

查询存储过程依赖关系的示例

假设我们有一个名为usp_GetOrderList的存储过程,位于dbo架构下,现在要查询哪些对象引用了这个存储过程,可以执行以下SQL语句:

-- 查询引用dbo.usp_GetOrderList的所有对象
SELECT
    referencing_schema_name,  -- 引用对象的架构名
    referencing_entity_name,  -- 引用对象的名称
    referencing_class_desc,   -- 引用对象的类型描述
    referenced_schema_name,   -- 被引用对象的架构名
    referenced_entity_name    -- 被引用对象的名称
FROM
    sys.dm_sql_referencing_entities('dbo.usp_GetOrderList', 'OBJECT');

执行上述语句后,返回的结果会列出所有引用了dbo.usp_GetOrderList的对象信息,比如如果有另一个存储过程usp_ProcessOrder调用了它,就会在结果中显示该存储过程的名称和类型。

查询结果字段说明

该函数返回的结果包含多个字段,常用的字段含义如下:

字段名含义说明
referencing_schema_name引用当前对象的对象的架构名称
referencing_entity_name引用当前对象的对象的名称
referencing_class_desc引用对象的类型描述,比如OBJECT表示对象,VIEW表示视图
referenced_schema_name被引用对象的架构名称,也就是我们查询时传入的架构名
referenced_entity_name被引用对象的名称,也就是我们查询时传入的对象名

注意事项

  • 该函数只能查询当前数据库内的对象依赖关系,无法跨数据库查询。
  • 如果存储过程是通过动态SQL引用的,可能无法被该函数检测到,因为动态SQL的依赖关系是在运行时才确定的。
  • 查询时需要确保当前用户有足够的权限访问系统视图和被查询的对象,否则可能返回空结果或者报错。

其他相关依赖查询方法

如果需要查询存储过程依赖了哪些其他对象,可以使用对应的系统函数sys.dm_sql_referenced_entities,语法和sys.dm_sql_referencing_entities类似,只是参数含义相反,示例如下:

-- 查询dbo.usp_GetOrderList依赖的所有对象
SELECT
    referenced_schema_name,
    referenced_entity_name,
    referenced_class_desc
FROM
    sys.dm_sql_referenced_entities('dbo.usp_GetOrderList', 'OBJECT');

另外也可以通过SQL Server Management Studio的图形界面查看依赖关系,右键点击存储过程,选择查看依赖关系,就能看到可视化的依赖关系图,不过图形界面的结果可能不如函数查询的结果灵活,适合快速查看简单场景的依赖情况。

SQL存储过程sys.dm_sql_referencing_entities依赖关系查询修改时间:2026-07-06 08:03:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。