首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

select with(readpast)取得的资料是未committed的有关问题

2012-03-31 
select with(readpast)取得的资料是未committed的问题有Client 甲、乙表T,字段CT表中有一笔资料,该笔字段C

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

热点排行