亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQL Server中自動(dòng)抓取阻塞的詳細(xì)流程

 更新時(shí)間:2024年08月27日 11:10:25   作者:Archy_Wang_1  
當(dāng)來(lái)自應(yīng)用程序的第一個(gè)連接控制鎖而第二個(gè)連接需要相沖突的鎖類(lèi)型時(shí),將發(fā)生阻塞,其結(jié)果是強(qiáng)制第二個(gè)連接等待,而在第一個(gè)連接上阻塞,本文給大家詳細(xì)介紹了SQL Server中如何自動(dòng)抓取阻塞,通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下

背景

當(dāng)發(fā)數(shù)據(jù)庫(kù)生阻塞時(shí),可以通過(guò)SQL語(yǔ)句來(lái)獲取當(dāng)前阻塞的會(huì)話情況,可以得到下面的信息

說(shuō)明:會(huì)話55阻塞了會(huì)話53。兩個(gè)會(huì)話都執(zhí)行了update test set fid=10 where fid=0。

但我們也經(jīng)常碰到客戶(hù)生產(chǎn)環(huán)境出現(xiàn)阻塞,由于不會(huì)抓取或者沒(méi)有及時(shí)抓取,導(dǎo)致問(wèn)題發(fā)生后,由于沒(méi)有相關(guān)的信息,導(dǎo)致問(wèn)題不能定位的問(wèn)題。

為了能夠保留問(wèn)題發(fā)生的現(xiàn)場(chǎng),實(shí)際上可以通過(guò)SQL Server的擴(kuò)展事件來(lái)實(shí)現(xiàn)自動(dòng)抓取。

部署方式

前提

由于SQL SERVER對(duì)阻塞的跟蹤報(bào)告事件默認(rèn)是禁用的,需要通過(guò)執(zhí)行下面的SQL語(yǔ)句開(kāi)啟。

        EXEC sp_configure 'show advanced options', 1;  
 
        GO  
 
        RECONFIGURE;  
 
        GO  
 
        EXEC sp_configure 'blocked process threshold', 10;  
 
        GO  
 
        RECONFIGURE;  
 
        GO
 
        EXEC sp_configure 'blocked process threshold'

執(zhí)行后,應(yīng)該看到下面的結(jié)果,表示修改成功。

配置

打開(kāi)Microsoft SQL SERVER Management Studio,點(diǎn)擊\擴(kuò)展事件\會(huì)話

在會(huì)話節(jié)點(diǎn),按右鍵選擇【新建會(huì)話】

輸入會(huì)話名稱(chēng)

并且勾選,來(lái)保證服務(wù)器啟動(dòng)時(shí),自動(dòng)啟動(dòng)擴(kuò)展事件。

選擇blocked_process_report事件

點(diǎn)【確認(rèn)】后,可以看到新建立的【阻塞】事件會(huì)話

啟動(dòng)會(huì)話

選擇【阻塞】事件會(huì)話,按右鍵彈出菜單,選擇【啟動(dòng)會(huì)話】

監(jiān)控會(huì)話

啟動(dòng)會(huì)話后,發(fā)生過(guò)阻塞后,就可以通過(guò)【監(jiān)控實(shí)時(shí)數(shù)據(jù)】來(lái)查看數(shù)據(jù)了

查看監(jiān)控結(jié)果

點(diǎn)擊阻塞的記錄,雙擊字段為blocked_process的值列,就可以看到通過(guò)腳本抓到的類(lèi)似的阻塞會(huì)話詳細(xì)信息。

問(wèn)題

但,這種方式抓取,從實(shí)際運(yùn)行情況來(lái)看,當(dāng)阻塞的會(huì)話超過(guò)2個(gè)時(shí),記錄的信息的會(huì)話不完整,存在丟失的問(wèn)題,需要注意。

打開(kāi)一個(gè)新的會(huì)話,同樣執(zhí)行update test set fid=10 where fid=0,用語(yǔ)句查詢(xún)時(shí),結(jié)果如下:

表示會(huì)話55阻塞了會(huì)話53,會(huì)話53阻塞了會(huì)話73。

但此時(shí)擴(kuò)展事件抓取的數(shù)據(jù),丟失了會(huì)話55的信息。只有會(huì)話53阻塞會(huì)話73的記錄。

• 查詢(xún)阻塞的SQL

SELECT t1.resource_type AS [鎖類(lèi)型], DB_NAME(resource_database_id) AS [數(shù)據(jù)庫(kù)名],
 
t1.resource_associated_entity_id AS [阻塞資源對(duì)象],
 
t1.resource_description as [資源描述信息], t1.request_mode AS [請(qǐng)求的鎖],
 
t1.request_session_id AS [等待會(huì)話], t2.wait_duration_ms AS [等待時(shí)間],      
 
(SELECT [text] FROM sys.dm_exec_requests AS r WITH (NOLOCK)                      
 
    CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle])
 
   WHERE r.session_id = t1.request_session_id
 
) AS [等待會(huì)話執(zhí)行的批SQL],
 
(SELECT SUBSTRING(qt.[text],r.statement_start_offset/2,
 
        (CASE WHEN r.statement_end_offset = -1
 
        THEN LEN(CONVERT(nvarchar(max), qt.[text])) * 2
 
        ELSE r.statement_end_offset END )/2)
 
    FROM sys.dm_exec_requests AS r WITH (NOLOCK)
 
    CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle]) AS qt
 
    WHERE r.session_id = t1.request_session_id
 
) AS [等待會(huì)話執(zhí)行的SQL],                    
 
t2.blocking_session_id AS [阻塞會(huì)話],                                        
 
(SELECT [text] FROM sys.sysprocesses AS p                                      
 
    CROSS APPLY sys.dm_exec_sql_text(p.[sql_handle])
 
    WHERE p.spid = t2.blocking_session_id
 
) AS [阻塞會(huì)話執(zhí)行的批SQL]
 
FROM sys.dm_tran_locks AS t1 WITH (NOLOCK)
 
INNER JOIN sys.dm_os_waiting_tasks AS t2 WITH (NOLOCK)
 
ON t1.lock_owner_address = t2.resource_address OPTION (RECOMPILE);

• blocked-process-report事件說(shuō)明

Blocked Process Report Event Class - SQL Server | Microsoft Learn

以上就是SQL Server中自動(dòng)抓取阻塞的詳細(xì)流程的詳細(xì)內(nèi)容,更多關(guān)于SQL Server自動(dòng)抓取阻塞的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論