我刚刚安装了 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/