摘要:SP_LOCK
--顯示被LOCK狀態
sp_lock
--刪除LOCK spid(確定狀況可刪除)
KILL spid
--spid是進程標識號碼 查詢何者連結該SPID
sp_who
--dbid是鎖定發生的數據庫(sysdatabases)
SELECT * FROM master.dbo.sysdatabases
--objid用來顯示在數據庫中鎖定發生所在的對象(sysobjects)
SELECT * FROM master.dbo.sysobjects
--這個DBCC命令將返回正在EventInfo字段中運行的語句的相關信息。
DBCC INPUTBUFFER(spid)
--列出最初導致一連串其它處理序被鎖住的起始源頭
IF EXISTS(SELECT * FROM master.dbo.sysprocesses WHERE spid in (SELECT blocked FROM master.dbo.sysprocesses))
BEGIN
SELECT spid 處理序, status 狀態
, 登入帳號=SUBSTRING(SUSER_SNAME(sid), 1, 30)
, 使用者機器名稱=SUBSTRING(hostname, 1, 12)
, 是否鎖住=CONVERT(char(3), blocked)
, 資料庫名稱=SUBSTRING(DB_NAME(dbid), 1, 10)
, cmd 命令, waittype 等待類型
FROM master.dbo.sysprocesses
--找出鎖住別(自己未被鎖住(blocked=0) 但在別的處理序中blocked欄位出現的值)
WHERE spid IN (SELECT blocked FROM master.dbo.sysprocesses)
AND blocked = 0
END
ELSE
BEGIN
SELECT '沒有處理序被鎖住'
END
/*
--開啟進階顯示(SQL2008以後需開啟)建議用完關掉
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE WITH OVERRIDE
GO
--取消平行處理
EXEC sp_configure 'max degree of parallelism', 1
GO
RECONFIGURE WITH OVERRIDE
GO
*/