sys.dm_tran_locks (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)Warehouse in Microsoft Fabric

Возвращает сведения о ресурсах диспетчера блокировки в настоящее время в SQL Server. Каждая строка представляет текущий активный запрос диспетчеру блокировок о блокировке, которая была получена или находится в ожидании получения.

Столбцы в результирующем наборе разделяются на две группы: ресурсы и запросы. Группа ресурсов описывает ресурсы, на которые был выполнен запрос блокировки, а группа запросов описывает запрос блокировки.

Примечание.

Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_tran_locks. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Имя столбца Тип данных Description
resource_type nvarchar(60) Представляет тип ресурса. Значение может быть: DATABASE, FILE, OBJECT, PAGE, KEY, EXTENT, RID, APPLICATION, METADATA, HOBT, ALLOCATION_UNIT или XACT.
resource_subtype nvarchar(60) Представляет подтип resource_type. Получение блокировки подтипа без хранения нетипизированной блокировки родительского типа технически допустимо. Разные подтипы не конфликтуют друг с другом или с нетипизированным родительским типом. Не у всех типов ресурсов имеются подтипы.
resource_database_id int Идентификатор базы данных, в рамках которой находится ресурс. Все ресурсы, обрабатываемые диспетчером блокировок, находятся в рамках идентификатора базы данных.
resource_description nvarchar(256) Описание ресурса, содержащее только те данные, которые недоступны из других столбцов источника.
resource_associated_entity_id bigint Идентификатор сущности в базе данных, с которой связан ресурс. Это может быть идентификатор объекта, идентификатор Hobt или идентификатор единицы распределения в зависимости от типа ресурса.
resource_lock_partition Int Идентификатор секционирования блокировки для ресурса с секционированными блокировками. Значением для непартиментированных ресурсов блокировки является 0.
request_mode nvarchar(60) Режим запроса. Режимом для предоставленных запросов является режим предоставления, для запросов в ожидании — запрашиваемый режим.

NULL = Блокировки нет. Играет роль заполнителя.

Sch-S (стабильность схемы) = гарантирует, что элемент схемы, например таблица или индекс, не удаляется, пока любой сеанс содержит блокировку стабильности схемы для элемента схемы.

Sch-M (изменение схемы) = должен проходить любой сеанс, который хочет изменить схему указанного ресурса. Заверяет, что другие сеансы не имеют ссылок на обозначенный объект.

S (shared) = сеанс хранения предоставляет общий доступ к ресурсу.

U (update) = указывает блокировку обновления, полученную для ресурсов, которые в конечном итоге могут быть обновлены. Используется для предотвращения распространенной формы взаимоблокировки, которая происходит, если несколько сеансов блокируют ресурсы для возможного обновления в будущем.

X (эксклюзивный) = сеанс хранения предоставляется монопольный доступ к ресурсу.

IS (Intent Shared) = Указывает намерение разместить блокировки S на некоторых подчиненных ресурсах в иерархии блокировки.

IU (Обновление намерений) = указывает намерение разместить блокировки U на некоторых подчиненных ресурсах в иерархии блокировки.

IX (намерение монопольное) = указывает намерение поместить блокировки X на некоторый подчиненный ресурс в иерархии блокировки.

SIU (обновление общего намерения) = указывает общий доступ к ресурсу с намерением получения блокировок обновления для подчиненных ресурсов в иерархии блокировки.

SIX (Shared Intent Exclusive) = Указывает общий доступ к ресурсу с намерением получения монопольных блокировок для подчиненных ресурсов в иерархии блокировки.

UIX (Update Intent Exclusive) = Указывает удержание блокировки обновления на ресурсе с намерением получения эксклюзивных блокировок на подчиненных ресурсах в иерархии блокировки.

BU = используется массовыми операциями.

RangeS_S (блокировка общего диапазона ключей и общего ресурса) = указывает на сканирование сериализуемого диапазона.

RangeS_U (блокировка ресурсов с общим диапазоном ключей и обновлением) = указывает на проверку сериализуемого обновления.

RangeI_N (вставка блокировки ресурсов с диапазоном ключей и null) = используется для тестирования диапазонов перед вставкой нового ключа в индекс.

RangeI_S = блокировка преобразования в диапазон ключей, созданная перекрытием RangeI_N и S-блокировки.

RangeI_U = блокировка преобразования в диапазоне ключей, созданная при перекрытии RangeI_N и блокировок U.

RangeI_X = блокировка преобразования в диапазоне ключей, созданная на основе перекрытия RangeI_N и X-блокировок.

RangeX_S = блокировка преобразования в диапазон ключей, созданная при перекрытии RangeI_N и RangeS_S. RangeS_S.

RangeX_U = блокировка преобразования в диапазон ключей, созданная на основе перекрытия RangeI_N и блокировки RangeS_U.

RangeX_X (монопольная блокировка ключей и монопольная блокировка ресурсов) = это блокировка преобразования, используемая при обновлении ключа в диапазоне.
request_type nvarchar(60) Тип запроса. Значение LOCK.
request_status nvarchar(60) Текущее состояние запроса. Возможные значения: GRANTED, CONVERT, WAIT, LOW_PRIORITY_CONVERT, LOW_PRIORITY_WAIT или ABORT_BLOCKERS. Дополнительные сведения о низкоприоритетных ожиданиях и блокировщиках прерываний см. в разделе low_priority_lock_wait ALTER INDEX (Transact-SQL).
request_reference_count smallint Возвращает приблизительное количество случаев, когда этот ресурс был запрошен одним и тем же объектом.
request_lifetime int Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
request_session_id int session_id в настоящее время принадлежит этому запросу. Владение session_id может изменяться для распределенных и привязанных транзакций. Значение -2 указывает, что запрос принадлежит к потерянным распределенным транзакциям. Значение -3 указывает, что запрос принадлежит отложенной транзакции восстановления, например транзакции, для которой откат был отложен при восстановлении, так как откат не удалось завершить успешно.
request_exec_context_id int Идентификатор контекста выполнения процесса, которому в данный момент принадлежит запрос.
request_request_id int request_id (пакетный идентификатор) процесса, которому в настоящее время принадлежит этот запрос. Это значение изменяется каждый раз, когда активное подключение к активному результирующем набору (MARS) для транзакции изменяется.
request_owner_type nvarchar(60) Тип сущности, которой принадлежит запрос. Запрос диспетчера блокировок может принадлежать нескольким разным объектам. Возможны следующие значения:

TRANSACTION = Запрос принадлежит транзакции.

CURSOR = Запрос принадлежит курсору.

SESSION = Запрос принадлежит сеансу пользователя.

SHARED_TRANSACTION_WORKSPACE = Запрос принадлежит общей части рабочего пространства транзакции.

EXCLUSIVE_TRANSACTION_WORKSPACE = Запрос принадлежит монопольной части рабочей области транзакции.

NOTIFICATION_OBJECT = запрос принадлежит внутреннему компоненту SQL Server. Этот компонент попросил диспетчера блокировок уведомлять его в случае, если другой компонент ожидает получения блокировки. Функция FileTable — это компонент, который использует это значение.

Примечание. Рабочие пространства используются внутренне для хранения блокировок для зачисленных сеансов.
request_owner_id bigint Идентификатор определенного владельца запроса.

Если владельцем запроса является транзакция, это значение содержит идентификатор транзакции.

Если FileTable является владельцем запроса, request_owner_id имеет одно из следующих значений:
  • -4 : FileTable взял блокировку базы данных.
  • -3 : FileTable взял блокировку таблицы.
  • Другое значение: значение представляет дескриптор файла. Это значение также отображается как fcb_id в динамическом представлении управления sys.dm_filestream_non_transacted_handles (Transact-SQL).
request_owner_guid uniqueidentifier Идентификатор GUID определенного владельца запроса. Это значение используется только распределенной транзакцией, для которой оно является идентификатором GUID координатора MS DTC.
request_owner_lockspace_id nvarchar(32) Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется. Это значение представляет идентификатор пространства блокировки запрашивающего объекта. Идентификатор заблокированного пространства определяет, совместимы ли друг с другом два запрашивающих объекта и можно ли им предоставить блокировки в режимах, которые в противном случае привели бы к конфликту.
lock_owner_address varbinary(8) Адрес внутренней структуры данных в памяти, используемый для отслеживания этого запроса. Этот столбец можно объединить с resource_address столбцом в sys.dm_os_waiting_tasks.
pdw_node_id int Область применения: Azure Synapse Analytics, Analytics Platform System (PDW)

Идентификатор узла, на который находится данное распределение.

Разрешения

На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE.

Для целей службы База данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах, учетной записи администратора сервера, учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE в базе данных или членство в роли сервера ##MS_ServerStateReader##.

Разрешения для SQL Server 2022 и более поздних версий

Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.

Замечания

Состояние предоставленного запроса показывает, что блокировка ресурса была предоставлена запрашивающему объекту. Ожидающий запрос обозначает, что запрос еще не был предоставлен. Следующие типы запросов ожидания возвращаются столбцом request_status :

  • Состояние преобразованного запроса означает, что запрашивающий объект получил запрос ресурса и в настоящий момент ожидает, пока будет предоставлено обновление исходного запроса.

  • Состояние ожидающего запроса означает, что к настоящему моменту запрашивающему объекту не был предоставлен запрос ресурса.

Так как sys.dm_tran_locks заполняется из внутренних структур данных диспетчера блокировки, при сохранении этой информации не добавляется дополнительная нагрузка на обычную обработку. Для материализации представлений требуется доступ к внутренним структурам данных диспетчера блокировок. Это может в незначительной степени повлиять на обычную обработку на сервере. Это влияние должно быть незаметным и проявляться только в отношении часто используемых ресурсов. Поскольку данные этого представления соответствуют активному состоянию диспетчера блокировок, они в любое время могут измениться, а строки добавляются и удаляются по мере выдачи и отмены блокировок. Приложения, запрашивающие это представление, могут испытывать непредсказуемую производительность из-за характера защиты целостности структур диспетчера блокировки. Для этого представления нет данных предыстории.

Два запроса выполняются на одном и том же ресурсе только в том случае, когда все столбцы группы ресурса совпадают.

Управлять блокировкой операций считывания можно с помощью следующих средств.

  • SET TRANSACTION ISOLATION LEVEL для определения уровня блокировки сеанса. Дополнительные сведения см. в разделе Инструкция SET TRANSACTION ISOLATION LEVEL (Transact-SQL).

  • Табличные подсказки блокировки для указания уровня блокировки для отдельной ссылки таблицы в предложении FROM. Сведения о синтаксисе и ограничениях см. в разделе "Подсказки таблиц" (Transact-SQL).

Ресурс, работающий под session_id одним из них, может иметь несколько предоставленных блокировок. Различные сущности, выполняемые в рамках одного сеанса, могут владеть блокировкой одного ресурса, а сведения отображаются в request_owner_type столбцах, request_owner_id возвращаемых sys.dm_tran_locks. Если существует несколько экземпляров одного и того же request_owner_type , request_owner_id столбец используется для различения каждого экземпляра. Для распределенных транзакций столбцы request_owner_typerequest_owner_guid отображают разные сведения об сущности.

Например, сеанс S1 владеет общей блокировкой; и транзакцией T1, которая выполняется в сеансе S1, также владеет общей блокировкойTable1Table1. В этом случае столбец, resource_description возвращаемый sys.dm_tran_locks двумя экземплярами одного ресурса. В столбце request_owner_type показан один экземпляр в виде сеанса и другой в виде транзакции. Кроме того, столбец resource_owner_id имеет разные значения.

Несколько курсоров, существующих в одном сеансе, неразличимы и обрабатываются как одна сущность.

Распределенные транзакции, которые не связаны со session_id значением, являются потерянными транзакциями и присваиваются значению session_id-2. Дополнительные сведения см. в разделе KILL (Transact-SQL).

Блокировки

Блокировки хранятся на ресурсах SQL Server, таких как строки, считываемые или измененные во время транзакции, чтобы предотвратить параллельное использование ресурсов различными транзакциями. Например, если исключительная (X) блокировка получена транзакцией на строку в таблице, никакая другая транзакция не сможет изменить эту строку, пока блокировка не будет освобождена. Минимизация использования блокировок повышает параллелизм, что может улучшить общую производительность.

Сведения о ресурсах

В следующей таблице перечислены ресурсы, представленные в столбце resource_associated_entity_id .

Тип ресурса Описание ресурса resource_associated_entity_id
DATABASE Представляет базу данных. Нет данных
ФАЙЛ Представляет файл базы данных. Может быть файлом данных или журнала. Нет данных
OBJECT Представляет объект базы данных. Может быть таблицей данных, представлением, хранимой процедурой, расширенной хранимой процедурой или любым другим объектом, имеющим идентификатор объекта. Код объекта
СТРАНИЦА Представляет отдельную страницу в файле данных. Идентификатор HoBt. Это значение соответствует sys.partitions.hobt_id. Идентификатор HoBt не всегда доступен для ресурсов PAGE, так как идентификатор HoBt является дополнительной информацией, которую может предоставить вызывающий объект, и не все вызывающие могут предоставить эту информацию.
КЛЮЧ Представляет строку в указателе. Идентификатор HoBt. Это значение соответствует sys.partitions.hobt_id.
EXTENT Представляет экстент файла данных. Экстент — это группа из восьми последовательных страниц. Нет данных
RID Представляет физическую строку в куче. Идентификатор HoBt. Это значение соответствует sys.partitions.hobt_id. Идентификатор HoBt не всегда доступен для ресурсов RID, поскольку в нем содержатся дополнительные данные, предоставляемые вызывающим участником, но не все вызывающие объекты способны предоставить эти данные.
ПРИЛОЖЕНИЕ Представляет определенный ресурс приложения. Нет данных
МЕТАДАННЫЕ Представляет метаданные. Нет данных
HOBT Представляет кучу или сбалансированное дерево. Это основные структуры путей доступа. Идентификатор HoBt. Это значение соответствует sys.partitions.hobt_id.
ALLOCATION_UNIT Представляет набор связанных страниц, таких как секция индекса. Каждая единица распределения покрывает отдельную цепочку карты распределения индекса (IAM). Идентификатор единицы распределения. Это значение соответствует sys.allocation_units.allocation_unit_id.
XACT Ресурс XACT. Связана с оптимизированной блокировкой. Имеется два сценария.

Сценарий 1 (владелец)
- Тип ресурса: XACT.
- Описание ресурса: если блокировка TID удерживается, resource_description это XACT ресурс.
- Идентификатор связанной с ресурсом сущности: resource_associated_entity_id 0.

Сценарий 2 (официант)
- Тип ресурса: XACT.
- Описание ресурса: когда мы ждем блокировки TID, это XACT ресурс, resource_description за которым следует базовый KEY или RID ресурс.
- Идентификатор связанной с ресурсом сущности: resource_associated_entity_id это базовый идентификатор HoBt.

Примечание.

В документации по SQL Server термин "сбалансированное дерево" обычно используется в отношении индексов. В индексах rowstore SQL Server реализует B+-дерево. Это не относится к индексам columnstore или хранилищам данных в памяти. Дополнительные сведения см. в руководстве по архитектуре и проектированию индексов SQL Sql Server и Azure.

В следующей таблице перечислены подтипы, связанные с типом каждого ресурса.

ResourceSubType Действия синхронизации
ALLOCATION_UNIT.BULK_OPERATION_PAGE Предварительно выделенные страницы, используемые для массовых операций.
ALLOCATION_UNIT.PAGE_COUNT Статистика счетчика страниц для единиц распределения во время отложенных операций удаления.
DATABASE.BULKOP_BACKUP_DB Создание резервных копий базы данных с помощью массовых операций.
DATABASE.BULKOP_BACKUP_LOG Создание резервных копий журнала базы данных с помощью массовых операций.
DATABASE.CHANGE_TRACKING_CLEANUP Задачи очистки отслеживания изменений.
DATABASE.CT_DDL Операции DDL над отслеживанием изменений на уровне таблиц и базы данных.
DATABASE.CONVERSATION_PRIORITY Операции приоритета диалогов компонента Service Broker, например CREATE BROKER PRIORITY.
DATABASE.DDL Операции языка DDL, связанные с операциями над файловой группой, такими как удаление.
DATABASE.ENCRYPTION_SCAN Синхронизация шифрования TDE.
DATABASE.PLANGUIDE Синхронизация структуры плана.
DATABASE.RESOURCE_GOVERNOR_DDL Операции языка DDL, относящиеся к операциям регулятора ресурсов, такие как ALTER RESOURCE POOL.
DATABASE.SHRINK Операции сжатия базы данных.
DATABASE.STARTUP Синхронизация базы данных при запуске.
FILE.SHRINK Операции сжатия файлов.
HOBT.BULK_OPERATION Операции массовой загрузки, оптимизированные для кучи, с одновременным просмотром на следующих уровнях изоляции: моментальные снимки, незафиксированная операция чтения и зафиксированная операция чтения с использованием управления версиями строк.
HOBT.INDEX_REORGANIZE Операции реорганизации кучи или индекса.
OBJECT.COMPILE Компиляция хранимой процедуры.
OBJECT.INDEX_OPERATION Операции с индексами.
OBJECT.UPDSTATS Обновление статистики для таблицы.
METADATA.ASSEMBLY Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ASSEMBLY_CLR_NAME Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ASSEMBLY_TOKEN Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ASYMMETRIC_KEY Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.AUDIT Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.AUDIT_ACTIONS Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.AUDIT_SPECIFICATION Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.AVAILABILITY_GROUP Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CERTIFICATE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CHILD_INSTANCE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.COMPRESSED_FRAGMENT Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.COMPRESSED_ROWSET Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CONVERSTATION_ENDPOINT_RECV Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CONVERSTATION_ENDPOINT_SEND Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CONVERSATION_GROUP Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CONVERSATION_PRIORITY Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CREDENTIAL Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CRYPTOGRAPHIC_PROVIDER Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DATA_SPACE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DATABASE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DATABASE_PRINCIPAL Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DB_MIRRORING_SESSION Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DB_MIRRORING_WITNESS Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DB_PRINCIPAL_SID Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ENDPOINT Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ENDPOINT_WEBMETHOD Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.EXPR_COLUMN Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.EXPR_HASH Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.FULLTEXT_CATALOG Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.FULLTEXT_INDEX Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.FULLTEXT_STOPLIST Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.INDEX_EXTENSION_SCHEME Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.INDEXSTATS Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.INSTANTIATED_TYPE_HASH Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.MESSAGE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.METADATA_CACHE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PARTITION_FUNCTION Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PASSWORD_POLICY Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PERMISSIONS Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PLAN_GUIDE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PLAN_GUIDE_HASH Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PLAN_GUIDE_SCOPE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.QNAME Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.QNAME_HASH Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.REMOTE_SERVICE_BINDING Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ROUTE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SCHEMA Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SECURITY_CACHE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SECURITY_DESCRIPTOR Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SEQUENCE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVER_EVENT_SESSIONS Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVER_PRINCIPAL Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVICE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVICE_BROKER_GUID Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVICE_CONTRACT Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVICE_MESSAGE_TYPE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.STATS Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SYMMETRIC_KEY Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.USER_TYPE Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.XML_COLLECTION Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.XML_COMPONENT Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.XML_INDEX_QNAME Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

В следующей таблице представлен формат столбца resource_description для каждого типа ресурса.

Ресурс Формат Description
DATABASE Нет данных Идентификатор базы данных уже доступен в столбце resource_database_id .
ФАЙЛ <file_id> Идентификатор файла, представляемого данным ресурсом.
OBJECT <object_id> Идентификатор объекта, представляемого данным ресурсом. Этот объект может быть любым объектом, перечисленным не только в sys.objectsтаблице.
СТРАНИЦА <file_id>:<page_in_file> Представляет файл и идентификатор страницы, представляемые данным ресурсом.
КЛЮЧ <hash_value> Представляет хэш ключевых столбцов из строки, представляемой данным ресурсом.
EXTENT <file_id>:<page_in_files> Представляет файл и идентификатор экстента, представляемые данным ресурсом. Идентификатор экстента совпадает с идентификатором первой страницы этого экстента.
RID <file_id>:<page_in_file>:<row_on_page> Представляет идентификатор страницы и идентификатор строки, представленной данным ресурсом. Если связанный идентификатор объекта равен 99, этот ресурс представляет один из восьми слотов смешанной страницы на первой странице IAM цепочки IAM.
ПРИЛОЖЕНИЕ <DbPrincipalId>:<up to 32 characters>:(<hash_value>) Представляет идентификатор участника базы данных, используемого для определения области действия ресурса блокировки этого приложения. Также включает до 32 символов из строки ресурса, соответствующего ресурсу блокировок для этого приложения. В некоторых случаях можно отобразить только два символа из-за того, что полная строка больше не доступна. Это происходит только во время восстановления базы данных для блокировок приложений, которые вызываются заново как часть процесса восстановления. Это хэш-значение представляет собой хэш-код полной строки ресурса, соответствующего ресурсу блокировки данного приложения.
HOBT Нет данных Идентификатор HoBt включен в качестве идентификатора resource_associated_entity_id.
ALLOCATION_UNIT Нет данных Идентификатор единицы выделения включается в качестве идентификатора resource_associated_entity_id.
XACT <dbid>:<XdesId low>:<XdesId high> Ресурс TID. Связана с оптимизированной блокировкой.
КЛЮЧ XACT [XACT <dbid>:<XdesId low>:<XdesId High>] KEY (<hash_value>) Базовый ресурс, на который ожидается транзакция, с кластеризованным объектом KEY индекса. Связана с оптимизированной блокировкой.
XACT RID [XACT <dbid>:<XdesId low>:<XdesId High>] RID (<file_id>:<page_in_file>:<row_on_page>) Базовый ресурс, на который ожидается транзакция, с объектом HEAP RID. Связана с оптимизированной блокировкой.
METADATA.ASSEMBLY assembly_id = A Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ASSEMBLY_CLR_NAME $qname_id = Q Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ASSEMBLY_TOKEN assembly_id = A, $token_id Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ASSYMMETRIC_KEY asymmetric_key_id = A Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.AUDIT audit_id = A Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.AUDIT_ACTIONS device_id = D, major_id = M Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.AUDIT_SPECIFICATION audit_specification_id = A Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.AVAILABILITY_GROUP availability_group_id = A Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CERTIFICATE certificate_id = C Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CHILD_INSTANCE $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.COMPRESSED_FRAGMENT object_id = O , compressed_fragment_id = C Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.COMPRESSED_ROW object_id = O Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CONVERSTATION_ENDPOINT_RECV $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CONVERSTATION_ENDPOINT_SEND $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CONVERSATION_GROUP $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CONVERSATION_PRIORITY conversation_priority_id = C Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CREDENTIAL credential_id = C Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.CRYPTOGRAPHIC_PROVIDER provider_id = P Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DATA_SPACE data_space_id = D Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DATABASE database_id = D Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DATABASE_PRINCIPAL principal_id = P Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DB_MIRRORING_SESSION database_id = D Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DB_MIRRORING_WITNESS $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.DB_PRINCIPAL_SID $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ENDPOINT endpoint_id = E Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ENDPOINT_WEBMETHOD $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.FULLTEXT_INDEX object_id = O Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.EXPR_COLUMN object_id = O, column_id = C Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.EXPR_HASH object_id = O, $hash = H Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.FULLTEXT_INDEX object_id = O Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.FULLTEXT_STOPLIST fulltext_stoplist_id = F Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.INDEX_EXTENSION_SCHEME index_extension_id = I Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.INDEXSTATS object_id = O, index_id или stats_id = I Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.INSTANTIATED_TYPE_HASH user_type_id = U, hash = H Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.MESSAGE message_id = M Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.METADATA_CACHE $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PARTITION_FUNCTION function_id = F Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PASSWORD_POLICY principal_id = P Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PERMISSIONS class = C Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PLAN_GUIDE plan_guide_id = P Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PLAN_GUIDE_HASH $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.PLAN_GUIDE_SCOPE scope_id = S Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.QNAME $qname_id = Q Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.QNAME_HASH $qname_scope_id = Q, $qname_hash = H Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.REMOTE_SERVICE_BINDING remote_service_binding_id = R Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.ROUTE route_id = R Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SCHEMA schema_id = S Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SECURITY_CACHE $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SECURITY_DESCRIPTOR sd_id = S Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SEQUENCE $seq_type = S, object_id = O Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVER server_id = S Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVER_EVENT_SESSIONS event_session_id = E Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVER_PRINCIPAL principal_id = P Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVICE service_id = S Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVICE_BROKER_GUID $hash = H1:H2:H3 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVICE_CONTRACT service_contract_id = S Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SERVICE_MESSAGE_TYPE message_type_id = M Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.STATS object_id = O, stats_id = S Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.SYMMETRIC_KEY symmetric_key_id = S Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.USER_TYPE user_type_id = U Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.XML_COLLECTION xml_collection_id = X Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.XML_COMPONENT xml_component_id = X Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
METADATA.XML_INDEX_QNAME object_id = O, $qname_id = Q Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

Примеры

А. Использование sys.dm_tran_locks с другими инструментами

В следующем примере выполняется работа со сценарием, в котором операция обновления блокируется другой транзакцией. С помощью sys.dm_tran_locks и других средств предоставляется информация о блокировке ресурсов.

USE tempdb;
GO

-- Create test table and index.
CREATE TABLE t_lock
    (
    c1 int, c2 int
    );
GO

CREATE INDEX t_lock_ci on t_lock(c1);
GO

-- Insert values into test table
INSERT INTO t_lock VALUES (1, 1);
INSERT INTO t_lock VALUES (2, 2);
INSERT INTO t_lock VALUES (3, 3);
INSERT INTO t_lock VALUES (4, 4);
INSERT INTO t_lock VALUES (5, 5);
INSERT INTO t_lock VALUES (6, 6);
GO

-- Session 1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

BEGIN TRAN
    SELECT c1
        FROM t_lock
        WITH(holdlock, rowlock);

-- Session 2
BEGIN TRAN
    UPDATE t_lock SET c1 = 10;

В следующем запросе отображаются сведения о блокировке. Значение для <dbid> этого параметра должно быть заменено значением database_id from sys.databases.

SELECT resource_type, resource_associated_entity_id,
    request_status, request_mode,request_session_id,
    resource_description
    FROM sys.dm_tran_locks
    WHERE resource_database_id = <dbid>;

Следующий запрос возвращает сведения об объекте с помощью значения resource_associated_entity_id из предыдущего запроса. Этот запрос должен быть выполнен, пока существует соединение с базой данных, содержащей объект.

SELECT object_name(object_id), *
    FROM sys.partitions
    WHERE hobt_id=<resource_associated_entity_id> ;

В следующем запросе показаны блокирующие сведения.

SELECT
    t1.resource_type,
    t1.resource_database_id,
    t1.resource_associated_entity_id,
    t1.request_mode,
    t1.request_session_id,
    t2.blocking_session_id
FROM sys.dm_tran_locks as t1
INNER JOIN sys.dm_os_waiting_tasks as t2
    ON t1.lock_owner_address = t2.resource_address;

Освобождение ресурсов с помощью отката транзакций.

-- Session 1
ROLLBACK;
GO

-- Session 2
ROLLBACK;
GO

В следующем примере возвращаются сведения, которые связываются session_id с идентификатором потока Windows. За производительностью потока можно наблюдать в системном мониторе Windows. Этот запрос не возвращает session_id спящий в данный момент объект.

SELECT STasks.session_id, SThreads.os_thread_id
FROM sys.dm_os_tasks AS STasks
INNER JOIN sys.dm_os_threads AS SThreads
    ON STasks.worker_address = SThreads.worker_address
WHERE STasks.session_id IS NOT NULL
ORDER BY STasks.session_id;
GO