我可以用來監視由UPDATE語句引起的SQL Server DeadLock的哪個SQL語句(函數或存儲過程)?SQl語句來監視SQL Server鎖
0
A
回答
2
我認爲你最好使用SQL Profiler監視死鎖 - 請參閱here。 SQL事件探查器在圖表中顯示死鎖,以便更容易地確定造成它們的原因。
3
嘗試此查詢看到阻塞進程,包括實際的SQL查詢文本:
SELECT
r.session_id AS spid
,r.cpu_time,r.reads,r.writes,r.logical_reads
,r.blocking_session_id AS BlockingSPID
,LEFT(OBJECT_NAME(st.objectid, st.dbid),50) AS ShortObjectName
,LEFT(DB_NAME(r.database_id),50) AS DatabaseName
,s.program_name
,s.login_name
,OBJECT_NAME(st.objectid, st.dbid) AS ObjectName
,SUBSTRING(st.text, (r.statement_start_offset/2)+1,((CASE r.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE r.statement_end_offset
END - r.statement_start_offset
)/2
) + 1
) AS SQLText
FROM sys.dm_exec_requests r
JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text (sql_handle) st
--WHERE [email protected]@SPID --uncomment to not see this query
死鎖很容易被困剖析:
嘗試運行運行跟蹤在分析器(挑空白模板),選擇「死鎖圖形事件」,然後在出現的新選項卡(事件提取設置)上,將它們分別保存在自己的文件中(將「單獨保存死鎖XML事件」)。用xml查看器打開這個文件,很容易知道發生了什麼。每個進程都包含一個執行堆棧的過程/觸發器等等,並且所有的鎖也在那裏。
查看文件的「資源列表」部分,它將顯示每個進程導致死鎖的鎖定和持有的內容。找出如何不鎖定其中的一個,並解決死鎖問題。
讓此跟蹤運行,直到死鎖再次發生,信息僅在死鎖發生時記錄,所以沒有太多開銷。如果它再也沒有發生過,那它就解決好了,如果沒有,你就捕獲了所有的信息。
0
SELECT * FROM sys.dm_exec_requests WHERE blocking_session_id <> 0
但是,這會顯示阻塞的請求,這對SQL Server來說是正常的,並不表示出現死鎖。如果SQL Server檢測到死鎖,它將會終止其中一個進程以允許其他進程繼續。所以你不能使用函數或存儲過程來監視它,因爲它發生的時間已經完成了。
您可以使用SQL Profiler或Trace Flags
相關問題
- 1. 如何監視SQL Server 2005上執行的sql語句
- 2. SQL server T-SQL語句
- 3. SQL Server狀態監視器
- 4. SQL Server死鎖(SQL Server 2000)
- 5. where語句中的case語句 - SQL Server
- 6. 使用SQL Server MERGE語句
- 7. SQL Server 2008的Case語句
- 8. case語句 - SQL Server 2008中
- 9. SQL SERVER CASE語句澄清
- 10. Microsoft SQL Server SELECT語句
- 11. SQL Server的SELECT語句
- 12. SQL Server - select into from語句?
- 13. 爲SQL Server Select語句
- 14. SQL Server中的CASE語句
- 15. SQL Server插入語句
- 16. 插入語句SQL Server
- 17. SQL Server中的USE語句
- 18. SQL Server的連接語句
- 19. SQL Server的連接語句
- 20. SQL Server語句輸出
- 21. SQL SERVER 2008 Select語句
- 22. SQL Server語句無效
- 23. SQL SERVER 2005 USE語句
- 24. SQL Server從CASE語句
- 25. SQL Server 2008中EXCEPT語句
- 26. SQL Server - Hibernate選擇SQL語句
- 27. sql-server,SQL查詢中的IF語句
- 28. SQL Server的SQL語句 - 更新記錄
- 29. T-SQL中的SQL Server CASE語句
- 30. SQL Server的鎖
將顯示該鏈接現在是死的。 – 2014-02-25 18:58:23