读书人

select with(readpast)取得的资料是未

发布时间: 2012-03-31 13:13:26 作者: rapoo

select with(readpast)取得的资料是未committed的问题
有Client 甲、乙
表T,字段C

T表中有一笔资料,该笔字段C='1'

甲:
begin tran
update T set C='2' where C='1'
commit tran

乙马上: select * from T with(readpast) where C='1'
结果: 1笔

乙等10秒再一次: select * from T with(readpast) where C='1'
结果: 0笔

请问这正常吗?是不是跟SQL Server的隔离等级是READ COMMITTED有关?
A问:用with(readpast)那它取出来的资料应该就是committed的才对,为什么还是会取到旧资料?
我猜:with(readpast)只是能读取已committed的Row,但并不保证资料是更新后的?

请问上面这种情况是有可能发生的吗?原因为何?如何避免呢?是否提升隔离等级就可以?
谢谢~~


[解决办法]
建议参考:
SQL Server脏读方式数据提取之NOLOCK和READPAST

读书人网 >SQL Server

热点推荐