MSSQL server nolock readpast 简介


一、nolock readpast 功能简介

nolock readpast的功能是:当数据表被其它资源锁定时,查询语句还可以继续向下运行。


二、nolock 与 readpast 区别

nolock 可将未提交事务(commit tran)的数据展示出来
readpast 会将未提交事务的数据隐藏起来


例:
当我们使用 
select * from 表名(nolock)  返回结果中,可以返回被锁定的数据
select * from 表名(readpast) 返回结构中 不包含被锁定的数据


三、nolock、readpast举例使用

测试读取数据
  3.1 分别打开查询分析器-两个窗口
   
3.2 在第一个窗口中运行脚本

CREATE TABLE tableTest (keyId int IDENTITY(1,1), infoTest varchar(60)) 
go 

insert tableTest(infoTest) values('test1')
go

BEGIN TRANSACTION 

insert tableTest(infoTest) values('test2')   
 

3.3 在第二个窗口中运行以下脚本 结果如下图所示:

  select * from tableTest(nolocK)
  select * from tableTest(readPast)
 

mssql-nolock-readpast运行结果

相关阅读:
sp_lock 说明
检测系统MSSQL中处于事务中的对象