You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

T-SQL如何查询SQL Server中指定表关联的所有视图及所属Schema

SQL Server查询指定表关联视图及Schema信息的正确方案

原使用的INFORMATION_SCHEMA.VIEW_TABLE_USAGE存在元数据更新不及时、未执行视图不会记录依赖关系的缺陷,无法覆盖新增视图、未调用视图的查询场景。

正确实现代码

SELECT
    vs.name AS VIEW_SCHEMA,
    v.name AS VIEW_NAME,
    ts.name AS TABLE_SCHEMA,
    t.name AS TABLE_NAME
FROM
    sys.tables t
INNER JOIN sys.schemas ts ON t.schema_id = ts.schema_id
INNER JOIN sys.sql_expression_dependencies dep 
    ON dep.referenced_id = t.object_id
INNER JOIN sys.views v 
    ON dep.referencing_id = v.object_id
INNER JOIN sys.schemas vs 
    ON v.schema_id = vs.schema_id
WHERE
    -- 替换为目标表名
    t.name = 'MYTABLE'
    -- 视图名过滤条件,不需要可直接删除
    AND v.name LIKE '%_something%'
ORDER BY VIEW_SCHEMA, VIEW_NAME

方案说明

  • 依赖sys.sql_expression_dependencies系统视图存储的对象依赖关系,只要视图定义中引用了目标表,无论视图是否被执行过都会保留依赖记录,不会出现查询为空的问题
  • 返回字段完全匹配需求的VIEW_SCHEMA、VIEW_NAME、TABLE_SCHEMA、TABLE_NAME四列结构
  • 关联逻辑基于SQL Server系统表内置的object_id、schema_id关联键,查询结果稳定准确,不会出现匹配错误
  • 支持SQL Server 2008及以上所有版本,无需额外权限,普通账号只要有系统视图查询权限即可执行
  • 如果需要查询跨Schema的同名表,可以在WHERE条件中添加ts.name = '目标表所属Schema名'做更精确的过滤

内容的提问来源于stack exchange,提问作者havmaage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:48:01