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