Класс событий Lock:Escalation
Класс событий Lock:Escalation возникает при укрупнении уровня блокировки, например при преобразовании блокировки строки в блокировку объекта. Класс событий Escalation имеет идентификатор события 60.
Столбцы данных класса событий Lock:Escalation
Имя столбца данных |
Тип данных |
Описание |
Идентификатор столбца |
Фильтруемый |
---|---|---|---|---|
ApplicationName |
nvarchar |
Имя клиентского приложения, установившего соединение с экземпляром SQL Server. Этот столбец заполняется значениями, передаваемыми приложением, а не отображаемым именем программы. |
10 |
Да |
ClientProcessID |
int |
Идентификатор, присвоенный сервером процессу, в котором работает клиентское приложение. Этот столбец данных заполняется в том случае, если клиент предоставляет идентификатор клиентского процесса. |
9 |
Да |
DatabaseID |
int |
Идентификатор базы данных, в которой запрашивается блокировка. Приложение 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. |
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 в формате «ДОМЕН\имя_пользователя»). |
11 |
Да |
LoginSid |
image |
Идентификатор безопасности для пользователя, вошедшего в систему. Эти сведения можно найти в представлении каталога sys.server_principals. Значение идентификатора безопасности уникально для каждого имени входа на сервере. |
41 |
Да |
Mode |
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 |
Нет |
SessionLoginName |
nvarchar |
Имя входа пользователя, создавшего этот сеанс. Например, при подключении к SQL Server с указанием имени «Имя_входа1» и при выполнении инструкции под именем «Имя_входа2» в столбце SessionLoginName отображается значение «Имя_входа1», а в столбце LoginName ― значение «Имя_входа2». В этом столбце отображаются как имена входа 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 byusing sp_trace_setfilter.
-- Start the trace.
EXEC sp_trace_setstatus @TraceID, 1;
GO
Теперь трассировка работает, можно выполнять необходимые инструкции для трассировки. Когда они завершатся, выполните приведенный ниже код, чтобы остановить и закрыть трассировку. В этом примере значение traceid, используемое в инструкциях sp_trace_setstatus, получается с помощью функции fn_trace_getinfo.
-- 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