消息 35371-聚集列存储索引

sqlserver版本:2014   操作,对线上库库存表加CCI。  表:dbo.product

然后就收到开发的消息,被告知查询报错。

消息 35371,级别 16,状态 1,第 1 行
具有聚集列存储索引的表不支持 SNAPSHOT 隔离级别。

嗯?什么情况,怎么会报错呢,把开发的语句拿出来看一下,答题如下:

select  * from  vproduct where column_a='aaa'
vproduct 是基于dbo.product的一个视图,看到这个。第一感觉就是可能和我们的事物隔离界别室友关系的。于是查看一下事物的隔离级别:
DBCC USEROPTIONS 

嗯,看到好像是有点问题,我们指导sqlserver的默认隔离级别都是RC的隔离级别,为什么会被人修改为RC snapshot呢?不过我在本库执行了开发给的语句:

select  * from  vproduct where column_a='aaa'

什么鬼,没有问题啊,直接执行成功了。难道是视图更新原因,从新更新了一下视图,告诉开发去查,还是同样报错。

这就奇怪了,我不在把这个报错定义到隔离级别上了。发现开发是在alwayson群组的从库进行查询的,于是我也去从库模拟查询一下。

 

果然报错了。

这样来看就很明显了,主库可以查询,从库不能够查询,应该是CCI的支持原因:

额,最终发现是因为只读副本是不支持CCI的功能的,2016才会支持。结束

 

posted @ 2017-02-21 10:29  M哥  阅读(227)  评论(0编辑  收藏  举报