Share via


Lock:Escalation 事件類別

適用於:SQL Server

Lock:Escalation 事件類別指出更精細的鎖定已轉換成粗細鎖定;例如,轉換成物件鎖定的資料列鎖定。 呈報事件類別是事件識別碼 60。

Lock:Escalation 事件類別資料行

資料行名稱 資料類型 描述 資料行識別碼 可篩選
ApplicationName nvarchar 建立 SQL Server 實例之連線的用戶端應用程式名稱。 此資料行會填入應用程式所傳遞的值,而不是程式顯示的名稱。 10 Yes
ClientProcessID int 主機電腦指派給執行用戶端應用程式的進程識別碼。 如果用戶端提供用戶端進程識別碼,就會填入此資料行。 9 Yes
DatabaseID int 取得鎖定的資料庫識別碼。 如果在追蹤中擷取到 ServerName 資料行且伺服器可用,SQL Server Profiler 便會顯示資料庫的名稱。 請使用 DB_ID 函數判斷資料庫的值。 3 Yes
DatabaseName nvarchar 發生擴大的資料庫名稱。 35 Yes
EventClass int 事件種類 = 60。 27 No
EventSubClass int 鎖定擴大的原因:

0 - LOCK_THRESHOLD 表示語句超過鎖定閾值。

1 - MEMORY_THRESHOLD 表示語句超過記憶體閾值。
21 Yes
EventSequence int 要求內指定事件的順序。 51 No
GroupID int SQL 追蹤事件引發之工作負載群組的識別碼。 66 Yes
HostName nvarchar 用戶端執行所在的電腦名稱稱。 如果用戶端提供主機名稱,則會填入此資料行。 若要判斷主機名稱,請使用 HOST_NAME 函數。 8 Yes
IntegerData int HoBT 鎖定計數。 鎖定擴大時 HoBT 的鎖定數目。 25 Yes
IntegerData2 int 呈報的鎖定計數。 已轉換的鎖定總數。 這些鎖定結構會解除配置,因為它們已經由呈報的鎖定所涵蓋。 55 Yes
IsSystem int 指出事件發生在系統進程或使用者進程上。 1 = 系統,0 = 使用者。 60 Yes
LineNumber int Transact-SQL 語句的行號。 5 Yes
LoginName nvarchar 使用者登入的名稱(SQL Server 安全性登入或網域\使用者名稱形式的 Microsoft Windows 登入認證)。 11 Yes
LoginSid image 已登入使用者的安全性識別碼(SID)。 您可以在sys.server_principals 目錄檢視中找到 此資訊。 每一個 SID 對於伺服器中的每個登入而言都是唯一的。 41 Yes
模式 int 擴大之後產生的鎖定模式:

0=Null - 與所有其他鎖定模式相容 (LCK_M_NL)

1=架構穩定性鎖定 (LCK_M_SCH_S)

2=架構修改鎖定 (LCK_M_SCH_M)

3=共用鎖定 (LCK_M_S)

4=更新鎖定 (LCK_M_U)

5=獨佔鎖定 (LCK_M_X)

6=意圖共用鎖定 (LCK_M_IS)

7=意圖更新鎖定 (LCK_M_IU)

8=意圖獨佔鎖定 (LCK_M_IX)

9=與意圖更新共用 (LCK_M_SIU)

10=與意圖獨佔共用 (LCK_M_SIX)

11=以意圖獨佔更新 (LCK_M_UIX)

12=大量更新鎖定 (LCK_M_BU)

13=金鑰範圍共用/共用 (LCK_M_RS_S)

14=金鑰範圍共用/更新 (LCK_M_RS_U)

15=索引鍵範圍插入 Null (LCK_M_RI_NL)

16=索引鍵範圍插入共用 (LCK_M_RI_S)

17=索引鍵範圍插入更新 (LCK_M_RI_U)

18=索引鍵範圍插入獨佔 (LCK_M_RI_X)

19=金鑰範圍獨佔共用 (LCK_M_RX_S)

20=金鑰範圍獨佔更新 (LCK_M_RX_U)

21=索引鍵範圍獨佔 (LCK_M_RX_X)
32 Yes
NTDomainName nvarchar 使用者所屬的 Windows 網域。 7 Yes
NTUserName nvarchar Windows 使用者名稱。 6 Yes
Exchange Spill int 觸發鎖定擴大之資料表的系統指派識別碼。 22 Yes
ObjectID2 bigint 相關物件或實體的識別碼。 (觸發鎖定擴大的 HoBT 識別碼。 56 Yes
Offset int Transact-SQL 語句的起始位移。 61 Yes
OwnerID int 1=TRANSACTION

2=CURSOR

3=SESSION

4=SHARED_TRANSACTION_WORKSPACE

5=EXCLUSIVE_TRANSACTION_WORKSPACE

6=WAITFOR_QUERY
58 Yes
RequestID int 包含 語句的要求識別碼。 49 Yes
ServerName nvarchar 要追蹤之 SQL Server 實例的名稱。 26 No
SessionLoginName nvarchar 產生會話之使用者的登入名稱。 例如,如果您使用 Login1 連接到 SQL Server,並以 Login2 的形式執行語句, SessionLoginName 會顯示 Login1,而 LoginName 會顯示 Login2。 此資料行會顯示 SQL Server 和 Windows 登入。 64 Yes
SPID int 事件發生所在之工作階段的識別碼。 12 Yes
StartTime datetime 如果有的話,事件開始的時間。 14 Yes
TextData ntext 導致鎖定擴大的 Transact-SQL 語句文字。 1 Yes
TransactionID bigint 交易的系統指派識別碼。 4 Yes
類型 int 鎖定擴大細微性:

1=Null_RESOURCE

2=DATABASE

3=FILE

5=OBJECT(表格層級)

6=PAGE

7=KEY

8=EXTENT

9=RID

10=APPLICATION

11=METADATA

12=HOBT

13=ALLOCATION_UNIT
57 Yes

範例

下列範例會 sp_trace_create 使用 程式來建立追蹤、使用 sp_trace_setevent 將鎖定擴大資料行新增至追蹤,然後使用 sp_trace_setstatus 來啟動追蹤。 在 之類的 EXEC sp_trace_setevent @TraceID, 60, 22, 1 語句中,數位 60 表示呈報事件類別、 22 指出 ObjectID 資料行,並將 1 追蹤事件設定為 ON。

DECLARE @RC int, @TraceID int;  
EXEC @rc = sp_trace_create @TraceID output, 0, N'C:\TraceResults';  
-- Set the events and data columns you need to capture.  
EXEC sp_trace_setevent @TraceID, 60,  1, 1; --  1 = TextData  
EXEC sp_trace_setevent @TraceID, 60, 12, 1; -- 12 = SPID  
EXEC sp_trace_setevent @TraceID, 60, 21, 1; -- 21 = EventSubClass  
EXEC sp_trace_setevent @TraceID, 60, 22, 1; -- 22 = ObjectID  
EXEC sp_trace_setevent @TraceID, 60, 25, 1; -- 25 = IntegerData  
EXEC sp_trace_setevent @TraceID, 60, 55, 1; -- 25 = IntegerData2  
EXEC sp_trace_setevent @TraceID, 60, 57, 1; -- 57 = Type  
-- Set any filter  by using sp_trace_setfilter.  
-- Start the trace.  
EXEC sp_trace_setstatus @TraceID, 1;  
GO  

現在追蹤正在執行,請執行您想要追蹤的語句。 完成時,請執行下列程式碼以停止,然後關閉追蹤。 這個範例會使用 函 fn_trace_getinfo 式來取得 traceid 要用於 語句的 sp_trace_setstatus

-- After the trace is complete.  
DECLARE @TraceID int;  
-- Find the traceid of the current trace.  
SELECT @TraceID = traceid   
FROM ::fn_trace_getinfo(default)   
WHERE value = N'C:\TraceResults.trc';  
  
-- First stop the trace.   
EXEC sp_trace_setstatus @TraceID, 0;  
  
-- Close and then delete its definition from SQL Server.   
EXEC sp_trace_setstatus @TraceID, 2;  
GO  

另請參閱

sp_trace_setevent (Transact-SQL)
sys.dm_tran_locks (Transact-SQL) (機器翻譯)