Sql-Server-2012
查看查詢執行期間獲取的鎖 (SQL Server)
查詢執行計劃預設不顯示鎖定詳細資訊,是否可以查看在執行查詢期間獲取的鎖定以及類型?
是否可以查看在執行查詢期間獲取的鎖以及類型?
是的,對於確定鎖,
- 您可以使用**
beta_lockinfo
Erland Sommarskog**
beta_lockinfo
是一個儲存過程,它提供有關程序和它們持有的鎖以及它們的活動事務的資訊。beta_lockinfo
旨在盡可能多地收集有關阻塞情況的資訊,以便在情況危急時立即找到罪魁禍首並殺死阻塞程序。然後,您可以坐下來分析輸出,beta_lockinfo
以了解阻塞情況是如何產生的,並找出要採取哪些措施來防止這種情況再次發生。輸出beta_lockinfo
顯示所有活動程序以及帶鎖的被動程序、它們鎖定了哪些對象、它們最後送出的命令以及它們正在執行的語句。您還可以獲得目前語句的查詢計劃。通常,您執行beta_lockinfo
直接查看輸出,但也有將數據保存到表中的**存檔模式。**如果您希望有人beta_lockinfo
在您自己無權訪問的站點上向您發送輸出,這並不是最不有用的。
- 另一種方法是**
sp_whoIsActive
Adam Machanic**使用@get_locks = 1
EXEC sp_WhoIsActive @filter = '', @filter_type = 'session', @not_filter = '', @not_filter_type = 'session', @show_own_spid = 0, @show_system_spids = 0, @show_sleeping_spids = 1, @get_full_inner_text = 0, @get_plans = 1, @get_outer_command = 1, @get_transaction_info = 0, @get_task_info = 1, @get_locks = 1, ----------> 1 = ON (get lock info); 0 = OFF @get_avg_time = 0, @get_additional_info = 0, @find_block_leaders = 0, @delta_interval = 0, @output_column_list = '[dd%][session_id][sql_text][sql_command][login_name][wait_info][tasks][tran_log%][cpu%][temp%][block%][reads%][writes%][context%][physical%][query_plan][locks][%]', @sort_order = '[start_time] ASC', @format_output = 1, @destination_table = '', @return_schema = 0, @schema = NULL, @help = 0