sys.dm_tran_locks (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Warehouse in Microsoft Fabric

Retorna informações sobre os recursos de gerenciador de bloqueio ativos atualmente no SQL Server. Cada linha representa uma solicitação ativa no momento para o gerenciador de um bloqueio que foi concedido ou que está aguardando concessão.

As colunas do conjunto de resultados são divididas em dois grupos principais: recurso e solicitação. O grupo de recurso descreve o recurso em que a solicitação de bloqueio está sendo feita, e o grupo de solicitações descreve a solicitação de bloqueio.

Observação

Para chamar isso do Azure Synapse Analytics ou do Analytics Platform System (PDW), use o nome sys.dm_pdw_nodes_tran_locks. Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Nome da coluna Tipo de dados Descrição
resource_type nvarchar(60) Representa o tipo do recurso. O valor pode ser: DATABASE, FILE, OBJECT, PAGE, KEY, EXTENT, RID, APPLICATION, METADATA, HOBT, ALLOCATION_UNIT ou XACT.
resource_subtype nvarchar(60) Representa um subtipo de resource_type. A aquisição de um bloqueio de subtipo sem manter um bloqueio não subtipado do tipo pai é tecnicamente válida. Subtipos diferentes não entram em conflito entre si ou com o tipo pai não subtipado. Nem todos os tipos do recurso têm subtipos.
resource_database_id int ID do banco de dados em que o recurso serve de escopo. Todos os recursos controlados pelo gerenciador de bloqueio são usados como escopo pela ID do banco de dados.
resource_description nvarchar(256) Descrição do recurso que contém apenas informações não disponíveis em outras colunas de recurso.
resource_associated_entity_id bigint ID da entidade em um banco de dados a que um recurso está associado. Pode ser uma ID de objeto ID, ID do Hobt ou uma ID de unidade de alocação, dependendo do tipo do recurso.
resource_lock_partition Int ID da partição de bloqueio de um recurso de bloqueio particionado. O valor para recursos de bloqueio não particionados é 0.
request_mode nvarchar(60) Modo da solicitação. Para solicitações concedidas, esse é o modo concedido; para solicitações em espera, esse é o modo sendo solicitado.

NULL = Nenhum acesso concedido ao recurso. Funciona como espaço reservado.

Sch-S (estabilidade do esquema) = Assegura que um elemento de esquema, como uma tabela ou índice, não seja cancelado enquanto qualquer sessão mantém o bloqueio de estabilidade do esquema no elemento do esquema.

Sch-M (modificação do esquema) = Deve ser mantido por qualquer sessão que desejar alterar o esquema do recurso especificado. Assegura que nenhuma outra sessão esteja fazendo referência ao objeto indicado.

S (compartilhado) = A sessão mantenedora possui acesso compartilhado ao recurso.

U (atualizar) = Indica um bloqueio de atualização adquirido em recursos que podem ser atualizados eventualmente. É usado para evitar uma forma comum de deadlock que ocorre quando várias sessões bloqueiam recursos para uma atualização potencial no futuro.

X (exclusivo) = A sessão mantenedora possui acesso exclusivo ao recurso.

IS (bloqueio intenção) Indica a intenção de colocar bloqueios S em algum recurso subordinado na hierarquia de bloqueio.

IU (atualização intenção) = Indica a intenção de colocar bloqueios U em algum recurso subordinado na hierarquia de bloqueio.

IX (bloqueio exclusivo) = Indica a intenção de colocar bloqueios X em algum recurso subordinado na hierarquia de bloqueio.

SIU (bloqueio de atualização intenção) = Indica o acesso compartilhado a um recurso com a intenção de adquirir bloqueios de atualização em recursos subordinados na hierarquia de bloqueio.

SIX (bloqueio de exclusivo intenção) = Indica o acesso compartilhado a um recurso com a intenção de adquirir bloqueios exclusivos em recursos subordinados na hierarquia de bloqueio.

UIX (bloqueio de atualização exclusivo) = Indica a manutenção de um bloqueio de atualização de um recurso com a intenção de adquirir bloqueios exclusivos em recursos subordinados na hierarquia de bloqueio.

BU = Usado por operações em massa.

RangeS_S (intervalo de chave compartilhado e bloqueio de recurso compartilhado) = Indica uma verificação de intervalo serializável.

RangeS_U (intervalo de chave compartilhado e bloqueio de recurso de atualização) = Indica uma verificação de atualização serializável.

RangeI_N (intervalo de chave de inserção e bloqueio de recurso nulo) = Usado para testar intervalos antes de inserir uma nova chave em um índice.

RangeI_S = Bloqueio de conversão de intervalo de chave criado por uma sobreposição dos bloqueios RangeI_N e S.

RangeI_U = Bloqueio de conversão de intervalo de chave criado por uma sobreposição dos bloqueios RangeI_N e U.

RangeI_X = Bloqueio de conversão de intervalo de chave criado por uma sobreposição dos bloqueios RangeI_N e X.

RangeX_S = Bloqueio de conversão de intervalo de chaves criado por uma sobreposição de bloqueios RangeI_N e RangeS_S. RangeS-S.

RangeIX_U = Bloqueio de conversão de intervalo de chave criado por uma sobreposição dos bloqueios RangeI_N e RangeS-U.

RangeX_X (Key-Range exclusivo e bloqueio de recurso exclusivo) = Esse é um bloqueio de conversão usado ao atualizar uma chave em um intervalo.
request_type nvarchar(60) Tipo de solicitação. O valor é LOCK.
request_status nvarchar(60) Status atual desta solicitação. Os valores possíveis GRANTED, CONVERT, WAIT, LOW_PRIORITY_CONVERT, LOW_PRIORITY_WAIT ou ABORT_BLOCKERS. Para obter mais informações sobre como esperas de baixa prioridade e bloqueadores de bloqueadores, confira a seção low_priority_lock_wait do ALTER INDEX (Transact-SQL).
request_reference_count smallint Retorna um número aproximado de vezes que o mesmo solicitante solicitou o recurso.
request_lifetime int Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
request_session_id int session_id que atualmente possui este pedido. A propriedade pode mudar para transações distribuídas session_id e vinculadas. Um valor de -2 indica que a solicitação pertence a uma transação distribuída órfã. Um valor de indica que a solicitação pertence a uma transação de -3 recuperação adiada, como uma transação para a qual uma reversão foi adiada na recuperação porque a reversão não pôde ser concluída com êxito.
request_exec_context_id int ID do contexto de execução do processo que atualmente possui esta solicitação.
request_request_id int request_id (ID do lote) do processo que atualmente possui essa solicitação. Esse valor é alterado sempre que a conexão MARS (Multiple Active Result Set) ativa para uma transação é alterada.
request_owner_type nvarchar(60) Tipo de entidade que é proprietária da solicitação. Solicitações de gerenciador de bloqueio podem ser de propriedade de várias entidades. Os valores possíveis são:

TRANSACTION = A solicitação que é propriedade de uma transação.

CURSOR = A solicitação que é propriedade de um cursor.

SESSION = A solicitação que é propriedade para uma sessão de usuário.

SHARED_TRANSACTION_WORKSPACE = A solicitação que é propriedade de uma parte compartilhada do workspace da transação.

EXCLUSIVE_TRANSACTION_WORKSPACE = A solicitação é de propriedade de uma parte exclusiva do workspace da transação.

NOTIFICATION_OBJECT = A solicitação é de propriedade de um componente interno do SQL Server. Esse componente solicitou que o gerenciador de bloqueio o notifique quando outro componente estiver esperando para obter o bloqueio. O recurso FileTable é um componente que usa esse valor.

Observação: os espaços de trabalho são usados internamente para manter bloqueios para sessões inscritas.
request_owner_id bigint ID do proprietário específico desta solicitação.

Quando uma transação for a proprietária da solicitação, esse valor conterá a ID da transação.

Quando um FileTable é o proprietário da solicitação, request_owner_id tem um dos seguintes valores:
  • -4 : Uma FileTable executou um bloqueio de banco de dados.
  • -3 : Uma FileTable fez um bloqueio de tabela.
  • Outro valor: O valor representa um identificador de arquivo. Este valor também aparece como fcb_id na exibição de gerenciamento dinâmico sys.dm_filestream_non_transacted_handles (Transact-SQL).
request_owner_guid uniqueidentifier GUID do proprietário específico desta solicitação. Esse valor é usado apenas uma transação distribuída em que o valor corresponde ao GUID de MS DTC da transação.
request_owner_lockspace_id nvarchar(32) Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida. Este valor representa a ID de lockspace do solicitante. Essa ID determina se dois solicitantes são compatíveis entre si e podem receber bloqueios nos modos que de outra forma entrariam em conflito entre si.
lock_owner_address varbinary(8) Endereço de memória da estrutura de dados interna que é usada para rastrear esta solicitação. Esta coluna pode ser unida à coluna com resource_address no sys.dm_os_waiting_tasks.
pdw_node_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

O identificador do nó em que essa distribuição está ativada.

Permissões

No SQL Server e na Instância Gerenciada de SQL, requer a permissão VIEW SERVER STATE.

Nos objetivos de serviço do SQL Database Basic, S0 e S1 e para bancos de dados em pools elásticos, a conta de administrador do servidor, a conta de administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##função de servidor é necessária. Em todos os outros objetivos de serviço do Banco de Dados SQL, a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader## são necessárias.

Permissões do SQL Server 2022 e posteriores

É necessária a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Comentários

Um status de solicitação concedida indica que um bloqueio foi concedido em um recurso ao solicitante. Uma solicitação de espera indica que a solicitação ainda não foi concedida. Os seguintes tipos de solicitação de espera são retornados request_status pela coluna:

  • Um status de solicitação de conversão indica que o solicitante já recebeu uma solicitação referente ao recurso e está no momento aguardando a concessão de atualização para a solicitação inicial.

  • Um status de solicitação de espera indica que o solicitante não mantém no momento uma solicitação concedida no recurso.

Como sys.dm_tran_locks é preenchido a partir de estruturas de dados internas do gerenciador de bloqueio, a manutenção dessas informações não adiciona sobrecarga extra ao processamento regular. A materialização da exibição requer acesso às estruturas de dados internos do gerenciador de bloqueio. Isso pode ter efeitos secundários no processamento regular no servidor. Esses efeitos não devem ser percebidos e devem afetar somente os recursos bastante usados. Como os dados dessa exibição correspondem ao estado do gerenciador de bloqueio ativo, os dados podem ser alterados a qualquer momento e as linhas são adicionadas e removidas à medida que os bloqueios são adquiridos e liberados. Os aplicativos que consultam essa exibição podem ter um desempenho imprevisível devido à natureza de proteger a integridade das estruturas do gerenciador de bloqueios. Essa exibição não tem nenhuma informação de histórico.

Duas solicitações só funcionarão no mesmo recurso se todas as colunas do grupo de recursos forem iguais.

Você pode controlar o bloqueio de operações de leitura usando as seguintes ferramentas:

  • Use SET TRANSACTION ISOLATION LEVEL para especificar o nível de bloqueio de uma sessão. Para obter mais informações, confira SET TRANSACTION ISOLATION LEVEL (Transact-SQL).

  • Use dicas de tabela de bloqueio para especificar o nível de bloqueio de uma referência individual de uma tabela em uma cláusula FROM. Para obter sintaxe e restrições, confira Dicas de tabela (Transact-SQL).

Um recurso que está sendo executado sob um pode ter mais de um session_id bloqueio concedido. Diferentes entidades que estão sendo executadas em uma sessão podem possuir um bloqueio no mesmo recurso, e as informações são exibidas request_owner_type nas colunas e request_owner_id retornadas pelo sys.dm_tran_locks. Se existirem várias instâncias da mesma request_owner_type , a request_owner_id coluna será usada para distinguir cada instância. Para transações distribuídas, as colunas e e mostram request_owner_guid as request_owner_type diferentes informações da entidade.

Por exemplo, a Sessão S1 possui um bloqueio compartilhado no ; e a transação T1, que está sendo executada na sessão S1, também possui um bloqueio compartilhado no Table1Table1. Nesse caso, a resource_description coluna retornada por sys.dm_tran_locks mostra duas instâncias do mesmo recurso. A request_owner_type coluna mostra uma instância como uma sessão e a outra como uma transação. Além disso, a resource_owner_id coluna tem valores diferentes.

Vários cursores em execução em uma sessão são indistinguíveis e são tratados como uma entidade.

As transações distribuídas que não estão associadas a um session_id valor são transações órfãs e recebem o session_id valor de -2. Para obter mais informações, confira KILL (Transact-SQL).

Locks

Os bloqueios são mantidos nos recursos SQL Server , como linhas lidas ou modificadas durante uma transação, para evitar o uso simultâneo de recursos por transações diferentes. Por exemplo, se um bloqueio exclusivo (X) for mantido em uma linha de uma tabela por uma transação, nenhuma outra transação poderá modificar essa linha até que o bloqueio seja liberado. Minimizar bloqueios aumenta a simultaneidade, o que pode melhorar o desempenho.

Detalhes do recurso

A tabela a resource_associated_entity_id seguir lista os recursos representados na coluna.

Tipo de recurso Descrição do recurso resource_associated_entity_id
DATABASE Representa um banco de dados. Não aplicável
FILE Representa um arquivo de banco de dados. Esse arquivo pode ser um arquivo de log ou de dados. Não aplicável
OBJECT Representa um objeto de banco de dados. Esse objeto pode ser uma tabela de dados, uma exibição, um procedimento armazenado, um procedimento armazenado estendido ou qualquer objeto que tenha uma ID de objeto. ID de objeto
PAGE Representa uma única página em um arquivo de dados. ID do HoBt. Esse valor corresponde a sys.partitions.hobt_id. A ID do HoBt não está sempre disponível para os recursos PAGE porque ela representa informações extras que podem ser fornecidas pelo chamador, e nem todos os chamadores podem fornecer essas informações.
KEY Representa uma linha em um índice. ID do HoBt. Esse valor corresponde a sys.partitions.hobt_id.
EXTENT Representa uma extensão de arquivo de dados. Uma extensão é um grupo de oito páginas contíguas. Não aplicável
RID Representa uma linha física em um heap. ID do HoBt. Esse valor corresponde a sys.partitions.hobt_id. A ID do HoBt não está sempre disponível para os recursos RID porque ela representa informações extras que podem ser fornecidas pelo chamador, e nem todos os chamadores podem fornecer essas informações.
APPLICATION Representa um recurso especificado de aplicativo. Não aplicável
METADATA Representa informações de metadados. Não aplicável
HOBT Representa um heap ou uma árvore B. Essas são as estruturas de caminho de acesso básicas. ID do HoBt. Esse valor corresponde a sys.partitions.hobt_id.
ALLOCATION_UNIT Representa um conjunto de páginas relacionadas, como uma partição de índice. Cada unidade de alocação cobre uma única cadeia de página IAM. ID da unidade de alocação. Esse valor corresponde a sys.allocation_units.allocation_unit_id.
XACT O recurso XACT. Relacionado ao bloqueio otimizado. Há dois cenários:

Cenário 1 (Proprietário)
- Tipo de recurso: XACT.
- Descrição do recurso: Quando um bloqueio TID é mantido, o é o resource_descriptionXACT recurso.
- ID da entidade associada ao recurso: resource_associated_entity_id é 0.

Cenário 2 (Garçom)
- Tipo de recurso: XACT.
- Descrição do recurso: Quando aguardamos um bloqueio TID, o é o resource_descriptionXACT recurso seguido pelo subjacente KEY ou RID recurso.
- ID da entidade associada ao recurso: resource_associated_entity_id é a ID do HoBt subjacente.

Observação

A documentação do SQL Server usa o termo árvore B geralmente em referência a índices. Em índices de rowstore, o SQL Server implementa uma árvore B+. Isso não se aplica a índices columnstore ou armazenamentos de dados na memória. Para obter mais informações, confira o Guia de arquitetura e design do índice do SQL Server e SQL do Azure.

A tabela a seguir lista os subtipos associados a cada tipo de recurso.

ResourceSubType Sincroniza
ALLOCATION_UNIT.BULK_OPERATION_PAGE Páginas pré-alocadas usadas para operações em massa.
ALLOCATION_UNIT.PAGE_COUNT Estatísticas de contagem de páginas de unidade de alocação durante as operações de descarte adiadas.
DATABASE.BULKOP_BACKUP_DB Backups de banco de dados com operações em massa.
DATABASE.BULKOP_BACKUP_LOG Backups de log de banco de dados com operações em massa.
DATABASE.CHANGE_TRACKING_CLEANUP Tarefas de limpeza do controle de alterações.
DATABASE.CT_DDL Banco de dados e operações DDL de controle de alterações do nível de tabela.
DATABASE.CONVERSATION_PRIORITY Operações de prioridade de conversa do Service Broker como CREATE BROKER PRIORITY.
DATABASE.DDL Operações DDL (linguagem de definição de dados) com operações de grupo de arquivos, como descarte.
DATABASE.ENCRYPTION_SCAN Sincronização de criptografia de TDE.
DATABASE.PLANGUIDE Sincronização de guia de plano.
DATABASE.RESOURCE_GOVERNOR_DDL Operações de DDL para operações de administrador de recurso como ALTER RESOURCE POOL.
DATABASE.SHRINK Operações de redução de banco de dados.
DATABASE.STARTUP Usado para sincronização de inicialização de banco de dados.
FILE.SHRINK Operações de redução de arquivo.
HOBT.BULK_OPERATION Operações de carregamento em massa otimizadas para heap com verificação simultânea nestes níveis de isolamento: instantâneo, leitura não confirmada e leitura confirmada com controle de versão de linha.
HOBT.INDEX_REORGANIZE Operações de reorganização de heap ou índice.
OBJECT.COMPILE Compilação de procedimento armazenado.
OBJECT.INDEX_OPERATION Operações de índice.
OBJECT.UPDSTATS Atualizações de estatísticas em uma tabela.
METADATA.ASSEMBLY Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ASSEMBLY_CLR_NAME Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ASSEMBLY_TOKEN Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ASYMMETRIC_KEY Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.AUDIT Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.AUDIT_ACTIONS Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.AUDIT_SPECIFICATION Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.AVAILABILITY_GROUP Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CERTIFICATE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CHILD_INSTANCE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.COMPRESSED_FRAGMENT Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.COMPRESSED_ROWSET Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CONVERSTATION_ENDPOINT_RECV Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CONVERSTATION_ENDPOINT_SEND Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CONVERSATION_GROUP Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CONVERSATION_PRIORITY Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CREDENTIAL Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CRYPTOGRAPHIC_PROVIDER Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DATA_SPACE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DATABASE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DATABASE_PRINCIPAL Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DB_MIRRORING_SESSION Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DB_MIRRORING_WITNESS Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DB_PRINCIPAL_SID Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ENDPOINT Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ENDPOINT_WEBMETHOD Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.EXPR_COLUMN Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.EXPR_HASH Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.FULLTEXT_CATALOG Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.FULLTEXT_INDEX Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.FULLTEXT_STOPLIST Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.INDEX_EXTENSION_SCHEME Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.INDEXSTATS Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.INSTANTIATED_TYPE_HASH Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.MESSAGE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.METADATA_CACHE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PARTITION_FUNCTION Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PASSWORD_POLICY Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PERMISSIONS Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PLAN_GUIDE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PLAN_GUIDE_HASH Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PLAN_GUIDE_SCOPE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.QNAME Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.QNAME_HASH Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.REMOTE_SERVICE_BINDING Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ROUTE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SCHEMA Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SECURITY_CACHE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SECURITY_DESCRIPTOR Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SEQUENCE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVER_EVENT_SESSIONS Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVER_PRINCIPAL Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVICE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVICE_BROKER_GUID Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVICE_CONTRACT Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVICE_MESSAGE_TYPE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.STATS Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SYMMETRIC_KEY Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.USER_TYPE Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.XML_COLLECTION Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.XML_COMPONENT Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.XML_INDEX_QNAME Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

A tabela a seguir fornece o resource_description formato da coluna para cada tipo de recurso.

Recurso Formatar Descrição
DATABASE Não aplicável A ID do banco de dados já está disponível na resource_database_id coluna.
FILE <file_id> ID do arquivo representado por esse recurso.
OBJECT <object_id> ID do objeto representado por esse recurso. Esse objeto pode ser qualquer objeto listado no sys.objects, não apenas uma tabela.
PAGE <file_id>:<page_in_file> Representa o arquivo e a ID da página representada por esse recurso.
CHAVE <hash_value> Representa um hash das colunas principais da linha representada por esse recurso.
EXTENT <file_id>:<page_in_files> Representa o arquivo e a ID da extensão representada por esse recurso. A ID de extensão é igual à ID da página da primeira página na extensão.
RID <file_id>:<page_in_file>:<row_on_page> Representa a ID da página e a ID da linha representada por esse recurso. Se o ID do objeto associado for 99, esse recurso representará um dos oito slots de página mista na primeira página do IAM de uma cadeia do IAM.
APPLICATION <DbPrincipalId>:<up to 32 characters>:(<hash_value>) Representa a ID do banco de dados principal usado para fazer o escopo desse recurso de bloqueio de aplicativo. Também incluídos estão até 32 caracteres da cadeia de caracteres de recurso que corresponde a este recurso de bloqueio de aplicativo. Em certos casos, apenas dois caracteres podem ser exibidos devido à cadeia de caracteres completa não estar mais disponível. Esse comportamento ocorre apenas no momento da recuperação do banco de bancos com relação aos bloqueios que são readquiridos como parte do processo de recuperação. O valor de hash representa um hash da cadeia de caracteres de recurso cheia, que corresponde a esse recurso de bloqueio de aplicativo.
HOBT Não aplicável HoBt ID está incluído como o resource_associated_entity_id.
ALLOCATION_UNIT Não aplicável O ID da Unidade de Alocação é incluído como o resource_associated_entity_id.
XACT <dbid>:<XdesId low>:<XdesId high> O recurso TID. Relacionado ao bloqueio otimizado.
CHAVE XACT [XACT <dbid>:<XdesId low>:<XdesId High>] KEY (<hash_value>) O recurso subjacente no qual a transação está aguardando, com um objeto KEY de índice clusterizado. Relacionado ao bloqueio otimizado.
XACT RID [XACT <dbid>:<XdesId low>:<XdesId High>] RID (<file_id>:<page_in_file>:<row_on_page>) O recurso subjacente no qual a transação está aguardando, com um objeto RID de heap. Relacionado ao bloqueio otimizado.
METADATA.ASSEMBLY assembly_id = A Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ASSEMBLY_CLR_NAME $qname_id = Q Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ASSEMBLY_TOKEN assembly_id = A, $token_id Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ASSYMMETRIC_KEY asymmetric_key_id = A Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.AUDIT audit_id = A Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.AUDIT_ACTIONS device_id = D, major_id = M Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.AUDIT_SPECIFICATION audit_specification_id = A Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.AVAILABILITY_GROUP availability_group_id = A Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CERTIFICATE certificate_id = C Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CHILD_INSTANCE $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.COMPRESSED_FRAGMENT object_id = O , compressed_fragment_id = C Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.COMPRESSED_ROW object_id = O Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CONVERSTATION_ENDPOINT_RECV $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CONVERSTATION_ENDPOINT_SEND $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CONVERSATION_GROUP $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CONVERSATION_PRIORITY conversation_priority_id = C Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CREDENTIAL credential_id = C Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.CRYPTOGRAPHIC_PROVIDER provider_id = P Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DATA_SPACE data_space_id = D Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DATABASE database_id = D Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DATABASE_PRINCIPAL principal_id = P Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DB_MIRRORING_SESSION database_id = D Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DB_MIRRORING_WITNESS $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.DB_PRINCIPAL_SID $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ENDPOINT endpoint_id = E Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ENDPOINT_WEBMETHOD $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.FULLTEXT_INDEX object_id = O Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.EXPR_COLUMN object_id = O, column_id = C Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.EXPR_HASH object_id = O, $hash = H Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.FULLTEXT_INDEX object_id = O Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.FULLTEXT_STOPLIST fulltext_stoplist_id = F Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.INDEX_EXTENSION_SCHEME index_extension_id = I Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.INDEXSTATS object_id = O, index_id ou stats_id = I Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.INSTANTIATED_TYPE_HASH user_type_id = U, hash = H Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.MESSAGE message_id = M Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.METADATA_CACHE $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PARTITION_FUNCTION function_id = F Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PASSWORD_POLICY principal_id = P Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PERMISSIONS class = C Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PLAN_GUIDE plan_guide_id = P Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PLAN_GUIDE_HASH $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.PLAN_GUIDE_SCOPE scope_id = S Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.QNAME $qname_id = Q Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.QNAME_HASH $qname_scope_id = Q, $qname_hash = H Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.REMOTE_SERVICE_BINDING remote_service_binding_id = R Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.ROUTE route_id = R Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SCHEMA schema_id = S Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SECURITY_CACHE $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SECURITY_DESCRIPTOR sd_id = S Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SEQUENCE $seq_type = S, object_id = O Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVER server_id = S Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVER_EVENT_SESSIONS event_session_id = E Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVER_PRINCIPAL principal_id = P Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVICE service_id = S Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVICE_BROKER_GUID $hash = H1:H2:H3 Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVICE_CONTRACT service_contract_id = S Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SERVICE_MESSAGE_TYPE message_type_id = M Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.STATS object_id = O, stats_id = S Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.SYMMETRIC_KEY symmetric_key_id = S Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.USER_TYPE user_type_id = U Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.XML_COLLECTION xml_collection_id = X Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.XML_COMPONENT xml_component_id = X Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
METADATA.XML_INDEX_QNAME object_id = O, $qname_id = Q Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

Exemplos

R. Use sys.dm_tran_locks com outras ferramentas

O exemplo a seguir trabalha com um cenário no qual uma operação de atualização é bloqueada por outra transação. sys.dm_tran_locks Usando e outras ferramentas, informações sobre o bloqueio de recursos são fornecidas.

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;

A consulta a seguir exibe informações de bloqueio. O valor de <dbid> para deve ser substituído pelo database_id de 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>;

A consulta a seguir retorna informações de objeto usando resource_associated_entity_id na consulta anterior. Essa consulta deverá ser executada enquanto você estiver conectado ao banco de dados que contém o objeto.

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

A consulta a seguir mostra informações de bloqueio.

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;

Libere recursos revertendo as transações.

-- Session 1
ROLLBACK;
GO

-- Session 2
ROLLBACK;
GO

O exemplo a seguir retorna informações que associam um session_id a uma ID de thread do Windows. O desempenho do thread pode ser monitorado no Monitor de Desempenho do Windows. Essa consulta não retorna um session_id que está em suspensão no momento.

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