Sql

確定使用查詢鎖定 SQL Server 的最佳方法是什麼?

  • February 24, 2011

最近我們的 SQL Server 陷入了困境。我想知道通過查詢數據庫來檢查可能導致問題的最佳方法是什麼。這是迄今為止我發現的最好的:

SELECT
   SPID            = s.spid
,   BlockingSPID    = s.blocked
,   DatabaseName    = DB_NAME(s.dbid)
,   ProgramName     = s.program_name
,   [Status]        = s.[status]
,   LoginName       = s.loginame
,   ObjectName      = OBJECT_NAME(objectid, s.dbid)
,   [Definition]    = CAST([text] AS VARCHAR(MAX))
FROM      sys.sysprocesses s
CROSS APPLY sys.dm_exec_sql_text (sql_handle)
WHERE 
s.spid > 50
ORDER BY
   DatabaseName
,   loginName

這是一個很好的起點。您還應該使用 sys.dm_os_waiting_tasks DMV 查看等待情況,它會告訴您哪個資源導致每個程序等待。

select wait_type, sum(wait_duration_ms) sum_wait_duration_ms, avg(wait_duration_ms) avg_wait_duration_ms, count(*) waits
from sys.dm_os_waiting_tasks
group by wait_type

引用自:https://serverfault.com/questions/239824