解决Sql Server锁表的解锁方式

查看锁表的id
select spId
from master…SysProcesses
where db_Name(dbID) = ‘数据库名称’
and spId <> @@SpId
and dbID <> 0

接触锁表方式
declare @spid int
Set @spid = 57 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)


操作SQLServer数据库时,遇到这样的问题:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

经过查找材料了解为资源抢占,照成死锁,杀死进程就OK了,具体操作如下:

select spId
from master…SysProcesses
where db_Name(dbID) = ‘数据库名称’
and spId <> @@SpId
and dbID <> 0
上面语句是获取进程ID,下面就是根据ID杀死相应进程
exec ('Kill '+spId(进程ID))

转载 https://blog.csdn.net/mh942408056/article/details/41114843

select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type=‘OBJECT’

select spId
from master…SysProcesses
where db_Name(dbID) = ‘qpaccountsdb’
and spId <> @@SpId
and dbID <> 0

=======================================
–查询数据库中所有表名及行数 --带架构名
SELECT s.name,a.name, b.rows
FROM sys.tables AS a
INNER JOIN sysindexes AS b ON a.object_id = b.id
LEFT JOIN sys.schemas as s on a.schema_id = s.schema_id
WHERE (a.type = ‘u’) AND (b.indid IN (0, 1))
ORDER BY b.rows DESC

==============================

第一步:查询死锁语句

1: 条件是 blocked <> 0

select dbid,* from sys.sysprocesses
where 1=1
and spid >50
and blocked <> 0
–and spid= 62

查询结果如下图所示:
在这里插入图片描述
以上查询得出:

受影响的数据库ID 是 5;
受到阻塞的会话有1301、1306、869、109;
阻塞会话是961;
第二步:查询发生阻塞或死锁的当前数据库

1:通过第一步查询,知道数据库ID 为 DBID=5。

2:sp_helpdb 或 Select name,dbid from master.sys.sysdatabases 查询数据库名称
在这里插入图片描述
第三步:查询发生阻塞或死锁的SQL语句

输出死锁的执行的语句:
dbcc inputbuffer(961)

语句如下:

select o.tp_Login,o.tp_Title, CONVERT(varchar(10),a.TimeCreated,120) as accessingdate,count(*) as docnum, ‘sps’ as type from UserData u,AllDocs a, userinfo o ,webs w where a.ListId = u.tp_ListId and a.Id = u.tp_docID and w.Id = a.WebId and w.SiteId = a.SiteId and w.SiteId = o.tp_SiteID and…以后省去

第四步:杀死锁

kill 961

之后再从第一步进行查询,看是否还存在死锁;

从第二步、第三步,查询出了出问题的锁死数据库及SQL语句,便于分析彻底解决死锁问题。
以下是sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息。这些进程可以是客户端进程或系统进程。sysprocesses 只存储在master 数据库中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
原文链接:https://blog.csdn.net/snowfoxmonitor/article/details/7182948

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值