Sqlserver之死鎖查詢以及批量解鎖的實(shí)現(xiàn)方法
Sqlserver死鎖查詢以及批量解鎖方法
Sqlserver死鎖查詢以及解鎖方法
(1)下面是查詢死鎖進(jìn)程
select? request_session_id spid, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(死鎖進(jìn)程id) OBJECT_NAME(resource_associated_entity_id) tableName ?(死鎖進(jìn)程名稱) from sys.dm_tran_locks? where resource_type='OBJECT' ? ? ? ? ? ? ? ? ? ? ? ? ?(數(shù)據(jù)類型所有)
(2)殺死死鎖進(jìn)程
declare @spid int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//聲明id Set ? ? @spid = 62 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //設(shè)置死鎖id declare @sql varchar(1000) ? ? ? ? ? ? ? ? ? ? ? ? ? ? //聲明sql? set ? ? @sql='kill '+cast(@spid as varchar) ? ? ? ? ? ?//設(shè)置 kill掉死鎖進(jìn)程 exec ? ?(@sql) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //執(zhí)行
或者
kill 62;
sqlserver 批量kill死鎖
select 'kill '+CONVERT(varchar,request_session_id) ,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where ? ?resource_type='OBJECT'
解決sqlserver死鎖問(wèn)題
創(chuàng)造死鎖
-- 開(kāi)始事務(wù) BEGIN TRANSACTION? update job set create_user='0000' where id = '1' WAITFOR DELAY '02:00' -- 執(zhí)行查詢 select * from job where id = '1';
解決方法
方法一
- 打開(kāi)sqlserver管理工具,新建sql查詢tab
- 執(zhí)行select * from master.sys.sysprocesses where dbid=db_id(‘數(shù)據(jù)庫(kù)名’)
- 然后會(huì)查詢到具體有哪個(gè)在連接到此數(shù)據(jù)庫(kù)
- 直接KILL spid的具體數(shù)值就可以了
方法二
-- 首先查詢 select ? ? ? ? request_session_id spid, ?? ? ? OBJECT_NAME(resource_associated_entity_id) tableName ? ? from ? ? ? ? sys.dm_tran_locks ?? where ? ? ? ? resource_type='OBJECT'? -- 然后執(zhí)行 ?? ?kill 67;
注意事項(xiàng):
有些用戶連接可以在kill掉后自動(dòng)重建,但期間有一段時(shí)間,如果碰到這種情況,需要在執(zhí)行完kill命令后立即執(zhí)行脫機(jī)操作
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Sql存儲(chǔ)過(guò)程游標(biāo)循環(huán)的用法及sql如何使用cursor寫(xiě)一個(gè)簡(jiǎn)單的循環(huán)
這篇文章主要介紹了循環(huán)和游標(biāo)在Sql存儲(chǔ)過(guò)程中使用及sql如何使用cursor寫(xiě)一個(gè)簡(jiǎn)單的循環(huán)的相關(guān)資料,需要的朋友可以參考下2015-11-11SQL Server誤區(qū)30日談 第5天 AWE在64位SQL SERVER中必須開(kāi)啟
在坊間流傳的有關(guān)AWE的設(shè)置的各種版本讓人非常困惑。比如說(shuō)如何設(shè)置起作用,如何設(shè)置不起作用,在32位和64位上是否需要AWE等2013-01-01SQL SERVER中SELECT和SET賦值相同點(diǎn)與不同點(diǎn)(推薦)
SELECT和SET在SQL SERVER中都可以用來(lái)對(duì)變量進(jìn)行賦值,但其用法和效果在一些細(xì)節(jié)上有些不同。今天小編給大家分享SQL SERVER中SELECT和SET賦值相同點(diǎn)與不同點(diǎn),感興趣的朋友一起看看吧2019-12-12sql server把退款總金額拆分到盡量少的多個(gè)訂單中詳解
這篇文章主要給大家介紹了關(guān)于sql server把退款總金額拆分到盡量少的多個(gè)訂單中的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12MSSQL中刪除用戶時(shí)數(shù)據(jù)庫(kù)主體在該數(shù)據(jù)庫(kù)存中擁有架構(gòu) 無(wú)法刪除的解決方法
在ms sql2005 下面刪除一個(gè)數(shù)據(jù)庫(kù)的用戶的時(shí)候提示 數(shù)據(jù)庫(kù)主體在該數(shù)據(jù)庫(kù)中擁有架構(gòu),無(wú)法刪除的錯(cuò)誤解決方案2013-08-08SQL 中sp_executesql存儲(chǔ)過(guò)程的使用幫助
建議使用 sp_executesql 而不要使用 EXECUTE 語(yǔ)句執(zhí)行字符串。支持參數(shù)替換不僅使 sp_executesql 比 EXECUTE 更通用,而且還使 sp_executesql 更有效,因?yàn)樗傻膱?zhí)行計(jì)劃更有可能被 SQL Server 重新使用。2011-04-04SQL數(shù)據(jù)庫(kù)連接超時(shí)時(shí)間已到的問(wèn)題
這篇文章主要介紹了SQL數(shù)據(jù)庫(kù)連接超時(shí)時(shí)間已到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04sqlserver中重復(fù)數(shù)據(jù)值只取一條的sql語(yǔ)句
sqlserver中有時(shí)候我們需要獲取多條重復(fù)數(shù)據(jù)的一條,需要的朋友可以參考下面的語(yǔ)句2012-05-05