Lock:Escalation 事件類別

Lock:Escalation 事件類別指出細粒鎖定已經轉換成粗粒鎖定;例如,轉換成物件鎖定的資料列鎖定。 擴大事件類別是事件識別碼 60。

Lock:Escalation 事件類別資料行

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

0 - LOCK_THRESHOLD 指出陳述式超過鎖定臨界值。

1 - MEMORY_THRESHOLD 指出陳述式超過記憶體臨界值。
21
EventSequence int 要求中的給定事件順序。 51
GroupID int SQL 追蹤事件引發所在之工作負載群組的識別碼。 66
HostName nvarchar 執行用戶端的電腦名稱。 如果用戶端提供主機名稱,這個資料行就會擴展。 若要判斷主機名稱,請使用 HOST_NAME 函數。 8
IntegerData int HoBT 鎖定計數。 鎖定擴大時,HoBT 的鎖定數目。 25
IntegerData2 int 擴大的鎖定計數。 已轉換的鎖定總數。 這些鎖定結構會被取消配置,因為它們已經由擴大的鎖定涵蓋了。 55
IsSystem int 指出事件是發生在系統處理序或使用者處理序。 1 = 系統,0 = 使用者。 60
LineNumber int Transact-SQL 語句的行號。 5
LoginName nvarchar 使用者登入的名稱 (SQL Server安全性登入或 Microsoft Windows 登入認證,格式為 DOMAIN\username) 。 11
LoginSid image 已登入之使用者的安全性識別碼 (SID)。 您可以在 sys.server_principals 目錄檢視中找到這項資訊。 伺服器上的每一個登入之 SID 是唯一的。 41
模式 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
NTDomainName nvarchar 使用者所隸屬的 Windows 網域。 7
NTUserName nvarchar Windows 使用者名稱。 6
Exchange Spill int 已觸發鎖定擴大之資料表的系統指派識別碼。 22
ObjectID2 bigint 相關物件或實體的識別碼。 (已觸發鎖定擴大的 HoBT 識別碼)。 56
Offset int Transact-SQL 語句的開始位移。 61
OwnerID int 1=TRANSACTION

2=CURSOR

3=SESSION

4=SHARED_TRANSACTION_WORKSPACE

5=EXCLUSIVE_TRANSACTION_WORKSPACE

6=WAITFOR_QUERY
58
RequestID int 包含陳述式之要求的識別碼。 49
ServerName nvarchar 所追蹤SQL Server實例的名稱。 26
SessionLoginName nvarchar 引發工作階段之使用者的登入名稱。 例如,如果您使用 Login1 連接到 SQL Server,並執行語句做為 Login2,SessionLoginName會顯示 Login1,而 LoginName 會顯示 Login2。 此資料行會顯示SQL Server和 Windows 登入。 64
SPID int 事件發生所在之工作階段的識別碼。 12
StartTime datetime 事件啟動的時間 (如果有的話)。 14
TextData ntext 造成鎖定擴大之 Transact-SQL 語句的文字。 1
TransactionID bigint 由系統指派給交易的識別碼。 4
型別 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

範例

下列範例會使用 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)