Sql server 有没有一种方法可以确定给定查询可能应用于SQL对象的锁?
考虑一个像select语句一样简单的查询: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 * 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探查器锁定事件类别