SQL Server(表可能被某些进程锁定) - 如何发布

时间:2014-02-20 09:57:52

标签: sql-server

我正在使用SQL Server 2012.我可以从表“Prime.ProductMaster”中选择行。

当我编写Select * from Prime.ProductMaster之类的查询时,它会继续执行。

当我使用Nolock运行相同的查询时。即Select * from Prime.ProductMaster WITH(NOLOCK)它执行。

我对此进行了调查,发现问题是在第2778行之后存在问题。我认为表可能会被其他一些进程锁定。

有谁能帮助我如何克服这个问题。我无法重启sql server,因为很多人共享它。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以右键单击我们的SQL实例名称并查看Activity Monitor,或者单击屏幕截图最右侧的图标。

Resource Waits下方,您应该会看到一行,表示可能持有的任何Lock。如果这显示0没有锁,则其他一些进程正在创建并在表或行上保留Lock

Processes下方,您应该能够看到活动连接,您可以按Database过滤,在您的情况下,可能Wait Type过滤,以确定持有{的过程{1}}。虽然这可能表明原因,您只需右键单击并Lock,根据应用程序方案,我将使用此信息来调查导致此kill process的问题/代码。

如果不清楚,您可能需要使用Lock配置数据库,以跟踪SQL Server Profiler的根本原因。我建议设置探查器以检查Lock和可能Locks以过滤掉跟踪中的“噪音”。

如果您需要有关如何定位Deadlocks的信息,请查看this video