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:有些时候强行杀掉进程是比较危险的,所以最好可以找到执行进程的主机,在该机器上关闭进程.

相关阅读 >>

mysql死锁是什么意思

ado.net数据连接池剖析

sql 注入式攻击的终极防范

mysql高级进阶sql语句总结大全

mysql 字段as详解及实例代码

关于sql语句的说法中,错误的是什么

行转列之sql server pivot与用法详解

sql 分组查询问题

sqlite教程(十二):锁和并发控制详解

数据库sql server怎么完全卸载?

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


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

数据库系统概念 第6版

机械工业出版社

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



打赏

取消

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

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

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

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

评论

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