我遇到以下问题: 我在事务中插入一行(比如'temp')(默认的ADO.NET事务)。在提交该事务之前,从另一个会话(SQL Server 2008管理工作室)运行的命令“select * from temp”将被阻止,无法完成。
这对我来说似乎很奇怪。 read命令不应该返回所有以前的表行(除了新插入的行之外的所有行)并且不会被阻塞吗?
答案 0 :(得分:2)
SQL Server中的默认行为是获取锁,并且在提交事务之前不会释放这些锁。
有三种主要方法 - READPAST hint(将跳过锁定的行),READ UNCOMMITTED隔离级别(或NOLOCK提示)(将返回所有行,包括新插入的一个或SNAPSHOT isolation level - 但要使快照起作用,需要在服务器级别启用