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


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

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

Да

Type

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