定谁锁定了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表。


数据运维技术 » 定谁锁定了SQL Server表?(sqlserver表被锁)