如何查找哪些视图正在使用 SQL Server (2008) 中的某个表?

问题描述 投票:0回答:7

我必须向表中添加几列,并且还需要将这些列添加到使用该表的所有视图中。

是否可以获取数据库中使用某个表的所有视图的列表?

sql sql-server view
7个回答
146
投票

这应该可以做到:

SELECT * 
FROM   INFORMATION_SCHEMA.VIEWS 
WHERE  VIEW_DEFINITION like '%YourTableName%'

21
投票

要查找表依赖关系,您可以使用 sys.sql_expression_dependencies 目录视图:

SELECT DISTINCT
referencing_object_name = o.name, 
referencing_object_type_desc = o.type_desc, 
referenced_object_name = referenced_entity_name, 
referenced_object_type_desc =so1.type_desc 
FROM sys.sql_expression_dependencies sed 
INNER JOIN sys.views o ON sed.referencing_id = o.object_id 
LEFT OUTER JOIN sys.views so1 ON sed.referenced_id =so1.object_id 
WHERE referenced_entity_name = 'Person'  

7
投票

我发现这样效果更好:

SELECT type, *
FROM sys.objects
WHERE OBJECT_DEFINITION(object_id) LIKE '%' + @ObjectName + '%'
AND type IN ('V')
ORDER BY name

VIEW_DEFINTION
内部过滤
INFORMATION_SCHEMA.VIEWS
给了我相当多的误报。


5
投票

如果您需要按名称查找数据库对象(例如表、列、触发器) - 请查看称为 SQL Search免费 Red-Gate 工具,它可以执行此操作 - 它会在整个数据库中搜索任何类型的字符串(s).

enter image description here

enter image description here

对于任何 DBA 或数据库开发人员来说,它都是一个很棒的必备工具 - 我是否已经提到过它绝对免费可用于任何类型的用途?


3
投票

选择您的表 -> 查看依赖关系 -> 依赖的对象


3
投票
SELECT VIEW_NAME
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE TABLE_NAME = 'Your Table'

0
投票

使用以下查询查找表名的已用视图或存储过程的最简单方法 -

exec dbo.dbsearch 'Your_Table_Name'
© www.soinside.com 2019 - 2024. All rights reserved.