通過 sysprocesses 解決Sql死鎖問題

2021-08-19 23:33:28 字數 2392 閱讀 4775

按照下述四步即可輕鬆解決死鎖問題:

第一步:查詢是否發生死鎖

select dbid,* from sys.sysprocesses

where

1=1and blocked <> 0

第二步:查詢發生阻塞或死鎖的資料庫

/*方法一*/

sp_helpdb

/*方法二*/

select dbid,name from sys.sysdatabases

第三步:查詢造成阻塞或死鎖的sql語句

/*520對應blocked的列值*/

dbcc inputbuffer(520)

第四步:打破死鎖

kill

520

之後再從第一步進行查詢,看是否還存在死鎖,然後按照順序進行處理即可。

以下是sysprocesses 表中儲存的關於執行在 microsoft® sql server™ 上的程序資訊,這些程序可以是客戶端程序或系統程序。sysprocesses 只儲存在master 資料庫中。

列名型別

說明spid

smallint

sql server程序 id。

kpid

smallint

microsoft windows nt 4.0® 執行緒 id。

blocked

smallint

分塊程序的程序 id (spid)。

waittype

binary(2)

保留。waittime

int當前等待時間(以毫秒為單位)。當程序不處於等待時為0。

lastwaittype

nchar(32)

表示上次或當前等待型別名稱的字串。

waitresource

nchar(32)

鎖資源的文字化表示法。

dbid

smallint

當前正由程序使用的資料庫 id。

uidsmallint

執行命令的使用者 id。

cpuint

程序的累計 cpu 時間。無論 set statistics time on 選項是 on 還是 off,都為所有程序更新該條目。

physical_io

int程序的累計磁碟讀取和寫入。

memusage

int當前分配給該程序的過程快取記憶體中的頁數。乙個負數,表示程序正在釋放由另乙個程序分配的記憶體。

login_time

datetime

客戶端程序登入到伺服器的時間。對於系統程序,是儲存 sql server 啟動發生的時間。

last_batch

datetime

客戶端程序上次執行遠端儲存過程呼叫或 execute 語句的時間。對於系統程序,是儲存 sql server 啟動發生的時間。

ecid

smallint

用於唯一標識代表單個程序進行操作的子執行緒的執行上下文 id。

open_tran

smallint

程序的開啟事務數。

status

nchar(30)

程序 id 狀態(如執行、休眠等)。

sidbinary(85)

使用者的全域性唯一識別符號 (guid)。

hostname

nchar(128)

工作站的名稱。

program_name

nchar(128)

應用程式的名稱。

hostprocess

nchar(8)

工作站程序 id 號。

cmdnchar(16)

當前正在執行的命令。

nt_domain

nchar(128)

客戶端的 windows nt 4.0 域(如果使用 windows 身份驗證)或信任連線的 windows nt 4.0 域。

nt_username

nchar(128)

程序的 windows nt 4.0使用者名稱(如果使用 windows 身份驗證)或信任連線的 windows nt 4.0 使用者名稱。

net_address

nchar(12)

指派給每個使用者工作站上的網路介面卡唯一識別符號。當使用者登入時,該識別符號插入net_address列。

net_library

nchar(12)

用於儲存客戶端網路庫的列。每個客戶端程序都在網路連線上進入。網路連線有乙個與這些程序關聯的網路庫,該網路庫使得這些程序可以建立連線。有關更多資訊,請參見客戶端和伺服器 net-library。

loginame

nchar(128)

登入名。

通過SYSPROCESSES表得到資料庫的死鎖資訊

sysprocesses sysprocesses 表中儲存關於執行在 microsoft sql server 上的程序的資訊。這些程序可以是客戶端程序或系統程序。sysprocesses 只儲存在 master 資料庫中。列名 資料型別 描述 spid smallint sql server 程...

SYSPROCESSES 檢視連線

原文 sysprocesses 檢視連線 select at.text,sp.from master dbo sysprocesses sp where hostprocess 3616 以上語句作用 查詢客戶端程序pid 為3616的程式,與此資料庫的所有的連線數,每個連線最後執行的語句以及每個連...

springboot中通過cors協議解決跨域問題

1 對於前後端分離的專案來說,如果前端專案與後端專案部署在兩個不同的域下,那麼勢必會引起跨域問題的出現。針對跨域問題,我們可能第乙個想到的解決方案就是jsonp,並且以前處理跨域問題我基本也是這麼處理。但是jsonp方式也同樣有不足,不管是對於前端還是後端來說,寫法與我們平常的ajax寫法不同,同樣...