日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用 sys.sysprocesses 检查 Sql Server的阻塞和死锁

發布時間:2025/7/25 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用 sys.sysprocesses 检查 Sql Server的阻塞和死锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Sys.SysProcesses 系統表是一個很重要的系統視圖,主要用來定位與解決Sql Server的阻塞和死鎖。
MSDN:包含正在 SQL Server 實例上運行的進程的相關信息。這些進程可以是客戶端進程或系統進程。

視圖中主要的字段:
1. Spid:Sql Servr 會話ID
2. Kpid:Windows ?線程ID
3. Blocked:正在阻塞求情的會話 ID。如果此列為 Null,則標識請求未被阻塞
4. Waittype:當前連接的等待資源編號,標示是否等待資源,0 或 Null表示不需要等待任何資源
5. Waittime:當前等待時間,單位為毫秒,0 表示沒有等待
6. DBID:當前正由進程使用的數據庫ID
7. UID:執行命令的用戶ID
8. Login_time:客戶端進程登錄到服務器的時間。
9. Last_batch:上次執行存儲過程或Execute語句的時間。對于系統進程,將存儲Sql Server 的啟動時間
10.Open_tran:進程的打開事務個數。如果有嵌套事務,就會大于1
11.Status:進程ID 狀態,dormant = 正在重置回話 ; running = 回話正在運行一個或多個批處理 ; background = 回話正在運行一個后臺任務 ; rollback = 會話正在處理事務回滾 ; pending = 回話正在等待工作現成變為可用 ; runnable = 會話中的任務在等待獲取 Scheduler 來運行的可執行隊列中 ; spinloop = 會話中的任務正在等待自旋鎖變為可用 ; suspended = 會話正在等待事件完成
12.Hostname:建立鏈接的客戶端工作站的名稱
13.Program_name:應用程序的名稱,就是 連接字符串中配的 Application Name
14.Hostprocess:建立連接的應用程序在客戶端工作站里的進程ID號
15.Cmd:當前正在執行的命令
16.Loginame:登錄名

應用實例:
1. 檢查數據庫是否發生阻塞
先查找哪個鏈接的 blocked 字段不為0。如 SPID53的blocked 字段不為0,而是 52。SPID 52 的 blocked 為0,就可以得出結論:此時有阻塞發生,53 被 52 阻塞住了。如果你發現一個連接的 blocked 字段的值等于它自己,那說明這個連接正在做磁盤讀寫,它要等自己的 I/O 做完。

2. 查找鏈接在那個數據庫上
檢查 dbid 即可。得到 dbid,可以運行以下查詢得到數據庫的名字: Select name,dbid from master.sys.sysdatabases

尋自己首發于博客園:利用 sys.sysprocesses 檢查 Sql Server的阻塞和死鎖

轉載于:https://www.cnblogs.com/xunziji/archive/2011/10/21/2220588.html

總結

以上是生活随笔為你收集整理的利用 sys.sysprocesses 检查 Sql Server的阻塞和死锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。