sql - sys.objects View 中缺少 Sys.Indexes 项 SQL Server 2014

标签 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:假

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

执行以下查询,我意识到 sys.indexes View 中的某些项目无法在 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 View 没有返回非架构范围的项目,但我找不到与上述项目相关的任何信息。直到今天我用的是SQL Server 2012,上面的表连接逻辑没有任何问题。

这些是什么东西?

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

谢谢,
科斯塔斯

最佳答案

您可以通过检查 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

关于sql - sys.objects View 中缺少 Sys.Indexes 项 SQL Server 2014,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25750033/

相关文章:

sql - Crystal 报表 SQL 表达式

mysql - 使用 Count 连接 3 个表

excel - 从 SSRS 导出到 Excel 时列宽发生变化

SQL 将多行转换为多列

sql - 如何通过按位运算符操作执行 SQL JOIN?

sql - 基于列组织表中的数据

sql - Hive 中的嵌套查询不起作用 : ParesException

sql - 在内部使用 OUTPUT/INTO 而不是插入触发器会使 'inserted' 表无效

sql - 为什么 select top ... order by 索引列仍然排序?

sql-server - SQL Server 2014 禁用所有列属性