sqlserver进程死锁关闭的方法


1.首先我们需要判断是哪个用户锁住了哪张表.

--查询被锁表

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

查询后会返回一个包含spid和tableName列的表. 其中spid是进程名,tableName是表名.

2.了解到了究竟是哪个进程锁了哪张表后,需要通过进程找到锁表的主机.

--查询主机名

exec sp_who2 'xxx' 

xxx就是spid列的进程,检索后会列出很多信息,其中就包含主机名.

3.通过spid列的值进行关闭进程.

--关闭进程 declare @spid int Set @spid = xxx 
--锁表进程 declare @sql varchar(1000) set @sql='kill '+cast(@spid as varchar) exec(@sql) 

PS:有些时候强行杀掉进程是比较危险的,所以最好可以找到执行进程的主机,在该机器上关闭进程.

相关阅读 >>

sqlserver 跨库查询实现方法

mysql的常用命令集锦

字段值包含一批延续的字符串

mysql锁表和解锁语句分享

adodb 入门第22页

c#连接sqlserver数据库、插入数据、从数据库获取时间示例

sql中in的用法是什么

pgsql条件语句与循环语句示例代码详解

触发器的类型有哪三种?

navicat连接sql server报错08001怎么办

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...