sys.sql_expression_dependencies是否仅覆盖对象定义内依赖,排除键/关系引用?
关于sys.sql_expression_dependencies的依赖范围说明
是的,sys.sql_expression_dependencies仅追踪对象定义内部直接引用的依赖关系,完全排除表之间的键约束、外键关联这类数据库层面的关系依赖。
举个例子:当你创建视图v_a时,定义里引用了t_a和t_b,查询这个系统视图只会返回v_a到t_a、v_a到t_b的依赖记录,不会出现t_a与t_b之间的键/关系依赖条目。
它主要追踪的是可编程对象(视图、存储过程、用户定义函数、触发器等)的SQL定义里明确写出的引用,比如:
- 视图SELECT语句中用到的表、视图
- 存储过程里调用的函数、访问的表
- 自定义函数里引用的其他对象
而以下这类依赖不会被它涵盖:
- 表之间的外键约束关联
- 主键与外键的关系
- 非函数定义的默认约束、检查约束关联的对象
- 数据库层面的其他非定义内的关联关系
如果要查询某个视图的依赖,可以用类似下面的SQL语句:
SELECT referencing_schema_name AS 引用对象架构名, referencing_entity_name AS 引用对象名, referenced_schema_name AS 被引用对象架构名, referenced_entity_name AS 被引用对象名 FROM sys.sql_expression_dependencies WHERE referencing_entity_name = 'v_a';
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

