Sql Server隔离级别读取未提交是锁定

时间:2015-03-04 00:12:15

标签: sql sql-server cursor locking isolation-level

我将隔离级别定义为READ UNCOMMITTED,因为这是几个表上的长时间运行过程,并且没有脏读的风险,因为我只是插入新数据

根据我的理解,因为我使用了这种隔离级别,所以我应该可以从我插入行的表中执行SELECT语句,但我不能,它被阻止了。

为什么此隔离级别会阻止SELECT语句?

应该允许查询这些表,并且在最坏的情况下,检索脏数据。

为了防止这种情况发生,我正在使用CURSOR(我知道,我也讨厌这些,但我没有编写这段代码)来处理大数据和多个表格。

1 个答案:

答案 0 :(得分:0)

当您执行插入操作(无论隔离级别是什么)时,会发生锁定。没有做一些锁定就无法插入行。隔离级别会影响阅读。

如果您使用(nolock)从tablea中选择*,您将读取未提交的行,但在短时间内(由于插入)将发生锁定。