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存储过程的概念与用法实例

sqlserver 常用日期时间函数

数据库性能优化之sql语句优化

sql中exists的基本用法示例

怎么防止sql注入?

sql语句case when用法详解

sql与mysql区别与联系

sqlmap 注射工具中文使用用法

oracle数据库事务隔离级别介绍

sql的左连接和右连接有什么区别

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


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

数据库系统概念 第6版

机械工业出版社

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



打赏

取消

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

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

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

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

评论

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