Lock:Escalation 이벤트 클래스

적용 대상:SQL Server

Lock:Escalation 이벤트 클래스는 세분화된 잠금이 거친 세분화된 잠금(예: 개체 잠금으로 변환된 행 잠금)으로 변환되었음을 나타냅니다. 에스컬레이션 이벤트 클래스는 이벤트 ID 60입니다.

Lock:Escalation 이벤트 클래스 데이터 열

데이터 열 이름 데이터 형식 Description 열 ID 필터 가능
ApplicationName nvarchar SQL Server 인스턴스에 대한 연결을 만든 클라이언트 애플리케이션의 이름입니다. 이 열은 표시된 프로그램 이름이 아닌 애플리케이션에서 전달한 값으로 채워집니다. 10
ClientProcessID int 호스트 컴퓨터에서 클라이언트 애플리케이션이 실행 중인 프로세스에 할당된 ID입니다. 클라이언트가 클라이언트 프로세스 ID를 제공하는 경우 이 데이터 열이 채워집니다. 9
DatabaseID int 잠금을 획득한 데이터베이스의 ID입니다. Sql Server Profiler는 ServerName 데이터 열이 추적에 캡처되고 서버를 사용할 수 있는 경우 데이터베이스의 이름을 표시합니다. 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 Trace 이벤트가 발생하는 워크로드 그룹의 ID입니다. 66
HostName nvarchar 클라이언트가 실행 중인 컴퓨터의 이름입니다. 클라이언트에서 호스트 이름을 제공하는 경우 이 데이터 열이 채워집니다. 호스트 이름을 확인하려면 HOST_NAME 함수를 사용합니다. 8
IntegerData int HoBT 잠금 수입니다. 잠금 에스컬레이션 시 HoBT에 대한 잠금 수입니다. 25
IntegerData2 int 에스컬레이션된 잠금 수입니다. 변환된 총 잠금 수입니다. 이러한 잠금 구조는 이미 에스컬레이션된 잠금으로 보호되므로 할당이 취소됩니다. 55
IsSystem int 시스템 프로세스 또는 사용자 프로세스에서 이벤트가 발생했는지 여부를 나타냅니다. 1 = system, 0 = user. 60
LineNumber int Transact-SQL 문의 줄 번호입니다. 5
LoginName nvarchar 사용자의 로그인 이름입니다(SQL Server 보안 로그인 또는 DOMAIN\username 형식의 Microsoft Windows 로그인 자격 증명). 11
LoginSid image 로그인한 사용자의 SID(보안 ID 번호)입니다. 이 정보는 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
Objectid int 잠금 에스컬레이션이 트리거된 테이블의 시스템 할당 ID입니다. 22
ObjectID2 bigint 관련 개체 또는 엔터티의 ID입니다. 잠금 에스컬레이션이 트리거된 HoBT ID입니다. 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 문을 포함하는 요청의 ID입니다. 49
데이터 열이 추적에서 캡처되고 서버를 사용할 수 있으면 nvarchar 추적 중인 SQL Server 인스턴스의 이름입니다. 26 없음
SessionLoginName nvarchar 세션을 시작한 사용자의 로그인 이름입니다. 예를 들어 Login1을 사용하여 SQL Server에 연결하고 Login2 로 문을 실행하는 경우 SessionLoginName 은 Login1을 표시하고 LoginName 은 Login2를 표시합니다. 이 열에는 SQL Server 및 Windows 로그인이 모두 표시됩니다. 64
SPID int 이벤트가 발생한 세션의 ID입니다. 12
StartTime datetime 이벤트가 시작된 시간(사용 가능한 경우)입니다. 14
TextData ntext 잠금 에스컬레이션을 발생시킨 Transact-SQL 문의 텍스트입니다. 1
TransactionID bigint 트랜잭션의 시스템 할당 ID입니다. 4
Type int 잠금 에스컬레이션 세분성:

1=NULL_RESOURCE

2=DATABASE

3=FILE

5=OBJECT(테이블 수준)

6=PAGE

7=KEY

8=EXTENT

9=RID

10=APPLICATION

11=메타데이터

12=HOBT

13=ALLOCATION_UNIT
57

다음 예제에서는 이 프로시저를 사용하여 sp_trace_create 추적을 만들고, sp_trace_setevent 추적에 잠금 에스컬레이션 열을 추가한 다음, 추적을 시작하는 데 사용합니다 sp_trace_setstatus . 와 같은 EXEC sp_trace_setevent @TraceID, 60, 22, 1문에서 숫자는 60 에스컬레이션 이벤트 클래스를 나타내고 ObjectID 22 열을 나타내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_getinfotraceid 사용하여 문에 사용할 함수를 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)