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


Класс событий 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

См. также

Справочник

Хранимая процедура sp_trace_setevent (Transact-SQL)

sys.dm_tran_locks (Transact-SQL)