sgs2020 发表于 2020-11-25 20:32

mssql 查找导致锁的SQL语句

--列出最初锁住资源,导致一连串其它处理序被锁住的起始源头
IF EXISTS(SELECT * FROM master..sysprocesses WHERE spid
    IN (SELECT blocked FROM master..sysprocesses))        --确定有处理序被其它的处理序锁住
        SELECT spid 处理序,status 状态, 登录账号=SUBSTRING(SUSER_SNAME(sid),1,30),
                用户机器名称=SUBSTRING(hostname,1,12), 是否被锁住=CONVERT(char(3),blocked),
                数据库名称 = SUBSTRING(DB_NAME(dbid),1,10),cmd 命令,waittype 等待状态
        FROM master..sysprocesses
        --列出锁住别人(在别的处理序中 blocked 字段出现的值),但自己未被锁住(blocked=0)
        WHERE spid IN (SELECT blocked FROM master.dbo.sysprocesses) AND blocked=0
ELSE
SELECT '没有处理序被锁住'

--显示当前进程最后sql语句
dbcc inputbuffer(888) --888即为查询到的ID
页: [1]
查看完整版本: mssql 查找导致锁的SQL语句