为什么这个SELECT语句会锁定SQL Server?

Jos*_*ons 5 locking sql-server-2005

我有这样一个简单的查询

SELECT * FROM MY_TABLE;
Run Code Online (Sandbox Code Playgroud)

当我运行它时,SQL Server Management Studio挂起.

其他表和视图工作正常.

是什么导致这个?我以前在运行UPDATE语句时有锁,我知道如何处理这些.但是什么可能导致SELECT锁定?

我已经运行了"All Blocking Transactions"报告,并且说没有.

Raj*_*ore 11

它可能不是锁定的选择,而是正在编辑(udpate/delete/insert)导致锁定的表的其他进程.

您可以通过exec sp_who2在SQL Server上运行来查看阻止的进程.

或者,如果您对脏读操作没有问题,则可以执行以下两种操作之一

SELECT * FROM Table WITH (NOLOCK)
Run Code Online (Sandbox Code Playgroud)

要么

SET Transaction Isolation Level Read Uncommitted
SELECT * FROM Table 
Run Code Online (Sandbox Code Playgroud)