我正在使用SQL Server 2012.我可以从表“Prime.ProductMaster”中选择行。
当我编写Select * from Prime.ProductMaster
之类的查询时,它会继续执行。
当我使用Nolock运行相同的查询时。即Select * from Prime.ProductMaster WITH(NOLOCK)
它执行。
我对此进行了调查,发现问题是在第2778行之后存在问题。我认为表可能会被其他一些进程锁定。
有谁能帮助我如何克服这个问题。我无法重启sql server,因为很多人共享它。
答案 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。