Поделиться через


Класс событий Lock:Escalation

Область применения: SQL Server

Класс событий Lock:Escalation возникает при укрупнении уровня блокировки, например при преобразовании блокировки строки в блокировку объекта. Класс событий Escalation имеет идентификатор события 60.

Столбцы данных класса событий Lock:Escalation

Имя столбца данных Тип данных Description Идентификатор столбца Доступно для фильтрации
ApplicationName nvarchar Имя клиентского приложения, создавшего подключение к экземпляру SQL Server. Этот столбец заполняется значениями, передаваемыми приложением, а не отображаемым именем программы. 10 Да
ClientProcessID int Идентификатор, присвоенный главным компьютером сервера процессу, в котором работает клиентское приложение. Этот столбец данных заполняется в том случае, если клиент предоставляет идентификатор клиентского процесса. 9 Да
DatabaseID int Идентификатор базы данных, в которой запрашивается блокировка. Sql Server Profiler отображает имя базы данных, если столбец данных ServerName фиксируется в трассировке и сервер доступен. Определите значение для базы данных, используя функцию DB_ID. 3 Да
DatabaseName nvarchar Имя базы данных, где произошло укрупнение уровня блокировки. 35 Да
EventClass int Тип события = 60. 27 No
EventSubClass int Причина укрупнения блокировки:

0 — LOCK_THRESHOLD показывает, что инструкция превысила порог блокировки;

1 — MEMORY_THRESHOLD показывает, что инструкция превысила пороговое значение памяти.
21 Да
EventSequence int Последовательность данного события в запросе. 51 No
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 Изображение Идентификатор безопасности вошедшего в систему пользователя. Эти сведения можно найти в представлении каталога sys.server_principals . Значение идентификатора безопасности уникально для каждого имени входа на сервере. 41 Да
Режим int Режим блокировки после укрупнения:

0=NULL — совместим с любыми другими режимами блокировки (LCK_M_NL)

1 = блокировка стабильности схемы (LCK_M_SCH_S)

2 = блокировка изменения схемы (LCK_M_SCH_S)

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 Присваиваемый системой идентификатор таблицы, для которой сработало укрупнение блокировки. 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 No
SessionLoginName nvarchar Имя входа пользователя, создавшего этот сеанс. Например, если вы подключаетесь к SQL Server с помощью Login1 и выполняете инструкцию 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)