人生贵在坚持!

处理数据阻塞和死锁

上一篇 / 下一篇  2017-05-27 10:03:39 / 个人分类:SQL

某天对正在使用的某个数据库操作离线,导致数据库阻塞,离线失败,查找了半天,终于处理。

--查询阻塞语句:
SELECT a.blocking_session_id, a.wait_duration_ms, a.session_id,b.text
FROM sys.dm_os_waiting_tasks a,
(SELECT t.text ,c.session_id
FROM sys.dm_exec_connections c 
CROSS APPLY sys.dm_exec_sql_text (c.most_recent_sql_handle) t) b 
WHERE  a.session_id = b.session_id and a.blocking_session_id IS NOT NULL
--处理方式:
--使用kill session ID的语句来终止某个阻塞的session。
kill [blocking_session_id];

--另外死锁的查询和处理如下:
exec master.dbo.sp_who_lock --查看当前死锁进程
exec master.dbo.p_killspid ytsafety--杀掉引起死锁的进程

--查询死锁

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

--杀死死锁进程

kill spid 





TAG:

 

评分:0

我来说两句

Open Toolbar