定谁锁定了SQL Server表?
在使用SQL Server的进程中,我们可能会遇到表被锁定的情况。每一个SQL Server的表的都可能会被锁定。那末定位表的锁定是查看谁锁定SQL Server表的重要手段。
首先,查看得知哪一个会话被锁定,可以通过一些系统的SQL命令来实现,以下:
SELECT
request_session_id
,SCHEMA_NAME(object.SCHEMA_ID) AS [schema_name]
,object.name AS [object_name]
, index_name
FROM sys.dm_tran_locks
JOIN sys.objects object
ON object_id = resource_associated_entity_id
WHERE resource_type = ‘OBJECT’
这条SQL语句会提示以哪一个会话为资源,和哪张表被锁定了。
查看这个会话,来得知谁锁定SQL Server表,可使用以下SQL查询:
SELECT sp.name ‘Login Name’,
host_name,
program_name,
client_interface_name from sys.sysprocesses sp
WHERE spid = @session_id
其中@session_id是上面查询到的会话 Id。这条SQL查询会显示出锁定表的用户,用户的主机名、程序名、和客户真个名称。检查这些信息,我们可以很容易地找到问题引发者,谁正在SQL Server表上锁定。
通过上述方式,查看哪一个会话被锁定,并找出引发这个会话的登录用户,就能够肯定是哪位用户锁定了SQL Server表。
本文来源:https://www.yuntue.com/post/216193.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏