2009-11-24 97 views
1

我想這是不可能的,但我想確保。SQL Server鎖定表

有我知道當一個表被鎖定,並且可能持續多久的方法嗎?我知道我可以看到一張桌子是否被鎖定,但我想要有一個「鎖定歷史」。

+0

相關但沒有**愚蠢:http://stackoverflow.com/questions/296906/log-table-access-using-sql-server-profiler – 2009-11-24 15:31:00

回答

4

一個「自由」的替代其他迴應中提到的展鵬工具,是MS-SQL Server Profiler中(見SQL Server Management Studio的工具菜單)。該工具可讓您通過指定您希望監視和/或記錄的事件類型來定義「痕跡」。甚至有[在SQL2008中,也許在舊版本中]鎖定問題的默認模板:TSQL_Locks

當心分析Profiler的日誌可能需要一些工作/搞清楚。可以根據特定的標準過濾事件(以及從源頭過濾這些事件,即首先從日誌中排除這些事件),但第三方產品(如RedGate的)可能會提供更多的易用性次使用,更好的聚合功能等

編輯
(以下Metju此言) 上述解決方案的建議,意味着人們將開始在Profiler工具提前記錄鎖定相關的事件。在MS-SQL 2005中沒有任何東西,至少沒有公開記錄,它將提供有關鎖的完整歷史信息的訪問權限,「postjoro」。但是,根據一個人的需求,足夠的洞察力可以有時可以從SQL活動監視器聚集(從數據庫的「管理」等樹的左側,在Management Studio),特別是「鎖定的對象」視圖。這種隱含可用的信息(不需要任何設置)通常足以識別死鎖的起源和類似問題。

+0

所以唯一的辦法是我創造我自己的審計並且從現在起有記錄,2005年沒有建立審計? 我其實需要這個,因爲出現了一些事情,我們需要知道發生了什麼。 非常感謝 – 2009-11-24 15:40:46

+2

警惕,雖然 - 跟蹤鎖活動時就可以得到「命中」了很多。 – 2009-11-24 15:42:20

+0

Right-on,Phillip,當我添加一段關於過濾和有限聚合功能的小段落時,我一直在思考相同的問題。 – mjv 2009-11-24 15:46:18

2

檢查從紅門這個工具出來。正是這種東西,我使用它非常多。此外,它讓我檢查長時間運行的查詢和其他有用的信息。有去年小時過濾,最後一天,永遠等..

RedGate SQL Response

1

沒有運行的監控工具(滾你自己的,第三方的,或處理SQL事件探查器的輸出),沒有沒有。