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