Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 有没有一种方法可以确定给定查询可能应用于SQL对象的锁?_Sql Server_Locking - Fatal编程技术网

Sql server 有没有一种方法可以确定给定查询可能应用于SQL对象的锁?

Sql server 有没有一种方法可以确定给定查询可能应用于SQL对象的锁?,sql-server,locking,Sql Server,Locking,考虑一个像select语句一样简单的查询: select * from Teachers where Name like N'%John%' 我一开始这个查询,它就结束了。因此,我没有机会看到sp_who2来找出这个查询在数据库对象上应用了什么类型的锁 我可以用交易报表来扩大这个查询: begin transaction select * from Teachers where Name like N'%John%' -- Here, I won't commit transaction,

考虑一个像select语句一样简单的查询:

select * from Teachers where Name like N'%John%'
我一开始这个查询,它就结束了。因此,我没有机会看到sp_who2来找出这个查询在数据库对象上应用了什么类型的锁

我可以用交易报表来扩大这个查询:

begin transaction

select * from Teachers where Name like N'%John%'

-- Here, I won't commit transaction, thus holding the lock
但坦率地说,这似乎不是自然锁定检测的正确方法,因为我已经使用事务语句操纵了默认行为


我们是否有一个工具,比如Display Estimated Execution Plan,向我们展示关于锁定给定查询的一些信息?如果没有,我们如何找出给定查询可以应用于数据库的锁的类型,因为它们执行得太快而无法检测。

不幸的是,您无法事先确定查询可能应用的锁

你可以查一下

为了解决阻塞的进程,我们首先需要确定 哪个进程是阻塞进程,然后如果可能,杀死 阻塞过程。在SQL Server中,有许多不同的方法 确定以下列出的块和块过程:

  • 活动监视器
  • SQLServer:锁定性能对象
  • DMV
    • sys.dm_exec_请求
    • sys.dm_传输锁
    • sys.dm_os_waiting_任务
  • SQL Server探查器锁定事件类别