引用表的视图列表

sat*_*jit 7 sql-server

有没有办法知道任何视图是否正在引用某个特定的表.我使用下面的代码,它只给出SP和函数名称:

select * from sys.objects p inner join sys.sql_modules m
on p.object_id = m.object_id 
where m.definition like '%abc%'
Run Code Online (Sandbox Code Playgroud)

请帮忙!!!

Der*_*omm 11

select * 
from INFORMATION_SCHEMA.VIEWS 
where VIEW_DEFINITION like '%abc%'
Run Code Online (Sandbox Code Playgroud)

  • 请注意,每个对象返回的字符数量有限(超出限制的任何内容都会被截断),因此在所有情况下都不能完全依赖INFORMATION_SCHEMA. (4认同)

Mil*_*dic 9

首先,您的查询在结果集中给出了视图(我在AdentureWorks2012上尝试了它 - > Production.Product表):

在此输入图像描述

如果您使用的是SQL Server 2008或更高版本,则可以使用sys.sql_expression_dependencies目录视图.例如:

SELECT 
referencing_object_name = o.name, 
referencing_object_type_desc = o.type_desc, 
referenced_object_name = referenced_entity_name, 
referenced_object_type_desc = o1.type_desc 
FROM sys.sql_expression_dependencies sed 
INNER JOIN sys.objects o 
ON sed.referencing_id = o.[object_id] 
LEFT OUTER JOIN sys.objects o1 
ON sed.referenced_id = o1.[object_id] 
WHERE referenced_entity_name = 'YourTable'
Run Code Online (Sandbox Code Playgroud)

它将为您提供关于用户定义实体的每个按名称依赖关系的详细信息

在此输入图像描述

对于列级依赖项,可以使用sys.dm_sql_referenced_entities函数

希望这可以帮助