码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server查詢未提交事務,終止進程,解除表鎖

时间:2015-05-20 22:21:27      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:sql

如果數據庫中有未提交的事務,相關表將一直處於死鎖狀態,從而影響其他進程的查詢(除非在查詢中用with (nolock))。
由於事務的隔離性,其他Session無法簡單通過RollBack Transaction來回滾事務,只能終止未提交事務所在會話的進程,然後由於事務的原子性,終止其進程,事務也就回滾了。

如何找出未提交的事務呢
運行如下命令:

DBCC OpenTran

結果如下:

技术分享

SPID即進程ID,再運行如下命令,終止進程即可:

kill 52 -- 52就是未提交事務會話所在SPID

另相關其他查詢:

 -- 查詢鎖定的表
select  
    object_name(P.object_id) as TableName,    
    resource_type, resource_description,request_session_id,L.resource_database_id
from
    sys.dm_tran_locks L
    join sys.partitions P on L.resource_associated_entity_id = p.hobt_id
WHERE L.resource_database_id = DB_ID()     

-- 查詢阻塞(Blocked)進程
SELECT * FROM sys.dm_exec_requests WHERE blocking_session_id<>0

SQL Server查詢未提交事務,終止進程,解除表鎖

标签:sql

原文地址:http://blog.csdn.net/helloword4217/article/details/45876227

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!