0

问题: 我正在使用 SQL Server 2012 Enterprise Management Studio,并且Intellisense正在打开和关闭。只要我连接到 2012 服务器和实例,它每天都会有所不同。当我连接到 2008R2 服务器和实例时,它始终正常运行(荒谬)。Aaron Bertrand在 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
4

1 回答 1

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%';

但我不太确定你的目标是什么。

于 2013-07-22T17:28:24.977 回答