存储过程中的表锁定

时间:2017-02-15 06:14:48

标签: c# sql-server stored-procedures sql-server-2012

我正在使用存储过程,该过程返回5-6个表,并且此过程可能同时被许多用户(5-10个用户)同时使用。

程序只有“选择”语句。

所以我只是想确认,只要程序调用或没有锁定,是否存在任何锁存储过程表的锁定。

我正在使用MS SQL Server 2012和Visual Studio 2013。

3 个答案:

答案 0 :(得分:1)

S (shared) locks: “用于不更改或更新数据的读取操作,例如SELECT语句。”请注意,S锁不会阻止其他读操作。

答案 1 :(得分:1)

  

当程序将调用或没有锁定时,是否存在对存储过程表的任何锁定。

select语句,将采用共享锁。这个锁将持续多久取决于你的隔离级别

重新提交:锁定将在读取行

后立即释放

可重复读取:共享锁将一直持续到事务结束,因此无法修改所选行

序列化:将在交易期间锁定,无法添加新行或无法修改旧行

答案 2 :(得分:0)

在您的情况下,无需考虑锁定。放轻松吧。在锁定区域,当同时进行多个处理时,某些进程会插入或更新数据。