sys.dm_tran_locks (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure хранилище платформы Аналитики Azure Synapse Analytics (PDW) в 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 ФАЙЛ OBJECT СТРАНИЦА KEY EXTENT RID (идентификатор строки) ПРИЛОЖЕНИЕ МЕТАДАННЫЕ HOBT (куча или дерево B-дерева) ALLOCATION_UNIT XACT (транзакция) OIB (сборка индекса в Интернете) ROW_GROUP |
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 имеет одно из следующих значений:
|
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_type
request_owner_guid
отображают разные сведения об сущности.
Например, сеанс S1 владеет общей блокировкой; и транзакцией T1, которая выполняется в сеансе S1, также владеет общей блокировкойTable1
Table1
. В этом случае столбец, 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 является дополнительной информацией, которую может предоставить вызывающий объект, и не все вызывающие могут предоставить эту информацию. |
KEY | Представляет строку в указателе. | Идентификатор HoBt. Это значение соответствует sys.partitions.hobt_id . |
EXTENT | Представляет экстент файла данных. Экстент — это группа из восьми последовательных страниц. | Нет данных |
RID | Представляет физическую строку в куче. | Идентификатор HoBt. Это значение соответствует sys.partitions.hobt_id . Идентификатор HoBt не всегда доступен для ресурсов RID, поскольку в нем содержатся дополнительные данные, предоставляемые вызывающим участником, но не все вызывающие объекты способны предоставить эти данные. |
ПРИЛОЖЕНИЕ | Представляет определенный ресурс приложения. | Нет данных |
МЕТАДАННЫЕ | Представляет метаданные. | Нет данных |
HOBT | Представляет кучу или сбалансированное дерево. Это основные структуры путей доступа. | Идентификатор HoBt. Это значение соответствует sys.partitions.hobt_id . |
Построение индекса в режиме "в сети" | Представляет онлайн-индекс (re)build. | Идентификатор HoBt. Это значение соответствует sys.partitions.hobt_id . |
ALLOCATION_UNIT | Представляет набор связанных страниц, таких как секция индекса. Каждая единица распределения покрывает отдельную цепочку карты распределения индекса (IAM). | Идентификатор единицы распределения. Это значение соответствует sys.allocation_units.allocation_unit_id . |
ROW_GROUP | Представляет группу строк columnstore. | |
XACT | Представляет транзакцию. Происходит при включенной оптимизированной блокировке . | Имеется два сценария. Сценарий 1 (владелец) - Тип ресурса: XACT .- Описание ресурса: если блокировка TID удерживается, resource_description это XACT ресурс.- Идентификатор связанной с ресурсом сущности: resource_associated_entity_id 0.Сценарий 2 (официант) - Тип ресурса: XACT .- Описание ресурса: когда запрос ожидает блокировки TID, resource_description это XACT ресурс, за которым следует базовый KEY или RID ресурс.- Идентификатор связанной с ресурсом сущности: resource_associated_entity_id это базовый идентификатор HoBt. |
Примечание.
В документации термин B-tree обычно используется в ссылке на индексы. В индексах rowstore ядро СУБД реализует дерево 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> |
Представляет файл и идентификатор страницы, представляемые данным ресурсом. |
KEY | <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>) |
Базовый ресурс, на который ожидается транзакция, с объектом INDEX 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
B. Связывание сведений о сеансе с потоками операционной системы
В следующем примере возвращаются сведения, которые связываются 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