定谁锁定了SQL Server表?(sqlserver表被锁)
定谁锁定了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表。