SqlServer 查看死锁的进程

今天测试同时运行将增量数据导入增量数据库对应的表并同步到全量数据库中,发现其中一个进程卡着不懂了。

在SQLServer自带的manage 客户端的活动和监视器中看到了死锁

活动监视器打开方式:

在进程中的头阻塞显示了1,说明有死锁。


这个工具, 用来查看一些当时的运行状态.和干掉进程.

但是这个工具只能查看部分哪个表被锁住了. 也无法知道是哪个进程和sql导致了锁进程. 只能查看一些其它的信息.

至于如何查看死锁的表, 需要用到下面的sql. 然后根据查出来的进程id 去上面的工具中

查看详细信息… 可以查看到引起死锁的SQL

查看当前死锁

SELECT
	request_session_id spid,
	OBJECT_NAME(
		resource_associated_entity_id
	) tableName
FROM
	sys.dm_tran_locks
WHERE
	resource_type = 'OBJECT'

查看死锁信息

exec master.dbo.sp_who_lock;--查看当前死锁进程
exec master.dbo.p_killspid ytsafety;--杀掉引起死锁的进程

查看进程信息

SELECT * FROM sys.dm_exec_connections;
SELECT * FROM sys.dm_exec_sessions;
SELECT
	spid,
	blocked,
	DB_NAME(sp.dbid) AS DBName,
	program_name,
	waitresource,
	lastwaittype,
	sp.loginame,
	sp.hostname,
	a.[Text] AS [TextData],
	SUBSTRING (
		A. TEXT,
		sp.stmt_start / 2,
		(
			CASE WHEN sp.stmt_end = - 1 THEN DATALENGTH (A. TEXT) ELSE sp.stmt_end END - sp.stmt_start
		) / 2
	) AS [current_cmd] FROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text (sp.sql_handle) AS A WHERE spid > 50 ORDER BY blocked DESC,
	DB_NAME(sp.dbid) ASC,
	a.[text];

杀掉死锁进程

kill spid

转载:https://blog.csdn.net/lz6363/article/details/84795712

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值