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列的值進行關(guān)閉進程.
--關(guān)閉進程
declare @spid int
Set @spid = xxx --鎖表進程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)
PS:有些時候強行殺掉進程是比較危險的,所以最好可以找到執(zhí)行進程的主機,在該機器上關(guān)閉進程.
以上所述是小編給大家介紹的sqlserver進程死鎖關(guān)閉的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- sql server中死鎖排查的全過程分享
- 詳解SQL Server中的事務(wù)與鎖問題
- sqlserver:查詢鎖住sql以及解鎖方法
- SQL Server學習筆記之事務(wù)、鎖定、阻塞、死鎖用法詳解
- Sql Server 死鎖的監(jiān)控分析解決思路
- Sql Server如何查看被鎖的表及解鎖的方法
- SqlServer查詢和Kill進程死鎖的語句
- sqlserver鎖表、解鎖、查看銷表的方法
- 查找sqlserver查詢死鎖源頭的方法 sqlserver死鎖監(jiān)控
- SQL Server三種鎖定模式的知識講解