sys.objects视图SQL Server 2014中缺少Sys.Indexes项

时间:2014-09-09 16:50:36

标签: sql sql-server-2014

我刚刚安装了SQL Server 2014。

  • 产品:Microsoft SQL Server Express(64位)
  • 操作系统:Microsoft Windows NT 6.1(7601)
  • 平台:NT x64
  • 版本:12.0.2000.8
  • 服务器整理:Latin1_General_CI_AS
  • 群集:错误
  • HADR是否已启用:False

我使用右键单击数据库创建了一个数据库 - >新数据库。我设置了一个名字,我保留了默认选项,然后按下确定。

执行以下查询,我意识到sys.indexes中无法找到sys.objects视图中的项目。

Select * 
From sys.indexes ind
Where not exists ( select * from sys.objects obj where ind.object_id = obj.object_id )

以上查询返回以下结果:

5575058         plan_persist_plan_cidx
5575058         plan_persist_plan_idx1
21575115        plan_persist_runtime_stats_cidx
21575115        plan_persist_runtime_stats_idx1
37575172        plan_persist_runtime_stats_interval_cidx
37575172        plan_persist_runtime_stats_interval_idx1
53575229        plan_persist_context_settings_cidx
2121058592      plan_persist_query_text_cidx
2121058592      plan_persist_query_text_idx1
2137058649      plan_persist_query_cidx
2137058649      plan_persist_query_idx1

我读到sys.objects视图没有返回非架构范围的项目,但我找不到与上述项目相关的任何信息。直到今天我使用SQL Server 2012,我对上面的表连接逻辑没有任何问题。

这些是什么类型的物品?

如何区分这些项目(其他=从sys.objects返回的项目?)

谢谢,
科斯塔斯

1 个答案:

答案 0 :(得分:0)

您可以通过选中IsMsShipped对象属性来排除这些项目:

Select * 
From sys.indexes ind
Where not exists ( select * from sys.objects obj where ind.object_id = obj.object_id )
And objectproperty( ind.object_id, 'IsMSShipped' ) = 0