系统视图的表或视图

时间:2013-07-22 16:52:07

标签: tsql sql-server-2012

问题:我正在使用SQL Server 2012企业管理工作室,Intellisense正在开启和关闭。如果我连接到2012服务器和实例,它会在一天内变化。当我连接到2008R2服务器和实例时,它始终正常运行(荒谬)。 Aaron Bertrand写了absolutely awesome article here about ways we can troubleshoot this in 2012。我已经完成了清单,一切都应该正确完成,这意味着这可能适合最后一项(因为它可以开启和关闭),虽然它在2008R2上工作正常似乎很奇怪。

问题:相反,我只是想使用脚本来查看对象,但是我找不到查看所有系统视图选项的脚本,这样我就可以执行类似查询的查找如果有任何相关的。例如:

sys.assemblies
sys.assembly_files
sys.assembly_modules
sys.assembly_references
sys.assembly_types

如果我在寻找:

SELECT *
FROM sys.[TheSourceI'mSeeking]
WHERE name LIKE '%assembl%'

通过这种方式,我可以快速查看我拥有的可用视图(intellisense可以真正帮助的地方),而不是打开所有内容。当我浏览sys.objects时,我找不到系统视图 - 还有另外一种解决方法吗?

回答(我认为就是这样):

SELECT *
FROM sys.all_views
WHERE is_ms_shipped = 1

1 个答案:

答案 0 :(得分:1)

系统视图存储在sys.all_views

如果您想搜索视图的代码以获取特定参考,您可以执行以下操作:

SELECT v.name, m.definition
  FROM sys.all_views AS v
  INNER JOIN sys.all_sql_modules AS m
  ON v.[object_id] = m.[object_id]
  WHERE v.is_ms_shipped = 1
  AND m.definition LIKE '%assembl%';

当然,这将返回引用名为assembl%的对象的每个视图以及具有该名称的每个视图。如果你想过滤掉后者:

  AND v.name NOT LIKE '%assembl%';

但我不太清楚你的目标是什么。