SQL Server如何查询视图内部引用的其他视图列表?
SQL Server查询视图引用的其他视图的方法
INFORMATION_SCHEMA.VIEW_TABLE_USAGE 系统视图仅会返回视图依赖的物理表,不会返回依赖的其他视图对象,你可以用 sys.dm_sql_referenced_entities 系统动态管理函数实现需求,该函数可以返回指定对象的所有被引用依赖项,包含视图、函数、表等各类对象。
单视图查询示例
如果要查询单个指定视图引用的所有视图,可执行以下SQL,替换语句中的dbo.YourViewName为你要查询的视图全名即可:
SELECT referenced_schema_name AS 被引用视图所属架构, referenced_entity_name AS 被引用视图名称 FROM sys.dm_sql_referenced_entities ('dbo.YourViewName', 'OBJECT') WHERE referenced_class_desc = 'VIEW';
全库批量查询示例
如果需要查询当前数据库内所有视图各自引用的视图列表,可执行以下SQL:
SELECT SCHEMA_NAME(v.schema_id) + '.' + v.name AS 源视图全名, re.referenced_schema_name + '.' + re.referenced_entity_name AS 被引用视图全名 FROM sys.views v CROSS APPLY sys.dm_sql_referenced_entities (SCHEMA_NAME(v.schema_id) + '.' + v.name, 'OBJECT') re WHERE re.referenced_class_desc = 'VIEW' ORDER BY 源视图全名;
注意事项
- 上述方法仅适用于查询当前数据库内的依赖引用,如果视图存在跨库引用,可额外查询
referenced_database_name字段确认关联的数据库 - 加密的视图定义无法被解析,该方法不会返回加密视图的依赖信息
- 如果需要同时查询视图依赖的表和视图,删除WHERE条件中的
referenced_class_desc = 'VIEW'过滤规则即可
内容的提问来源于stack exchange,提问作者Bala
相关产品推荐
相关产品推荐

