sys.dm_tran_locks (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Warehouse do PDW (Analytics Platform System) no 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 PDW (Analytics Platform System), 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 (ID da linha) APPLICATION METADATA HOBT (pilha ou árvore B) ALLOCATION_UNIT XACT (Transação) OIB (compilação de índice online) ROW_GROUP |
resource_subtype |
nvarchar(60) | Representa um subtipo de resource_type . Adquirir um bloqueio de subtipo sem manter um bloqueio não subtipado do tipo pai é tecnicamente válido. 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 um ID de objeto, ID de HOBT ou um ID de unidade de alocação, dependendo do tipo de 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 essa solicitação. A propriedade session_id pode mudar para transações distribuídas e associadas. Um valor de -2 indica que a solicitação pertence a uma transação distribuída órfã. Um valor de -3 indica que a solicitação pertence a uma transação de 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 muda sempre que a conexão MARS (Conjunto de Resultados Ativos Múltiplos) 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:
|
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 em 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 Banco de Dados SQL Básico, S0 e S1 e para bancos de dados em pools elásticos, é necessário ter a conta do administrador do servidor, a conta do administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader##
função de servidor. 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 em 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 do gerenciador de bloqueio interno, 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 em um session_id
pode ter mais de um bloqueio concedido. Entidades diferentes que estão sendo executadas em uma sessão podem possuir um bloqueio no mesmo recurso, e as informações são exibidas nas request_owner_type
colunas e request_owner_id
retornadas por sys.dm_tran_locks
. Se existirem várias instâncias do mesmo request_owner_type
, a request_owner_id
coluna será usada para distinguir cada instância. Para transações distribuídas, as request_owner_type
colunas e as request_owner_guid
mostram as diferentes informações da entidade.
Por exemplo, a Sessão S1 possui um bloqueio compartilhado em Table1
; e a transação T1, que está sendo executada na sessão S1, também possui um bloqueio compartilhado em Table1
. 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 seguir lista os recursos representados na resource_associated_entity_id
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 em um 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. Este 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. Este 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. Este 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. Este valor corresponde a sys.partitions.hobt_id . |
OIB | Representa a (re)compilação do índice online. | ID do HoBt. Este 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. Este valor corresponde a sys.allocation_units.allocation_unit_id . |
ROW_GROUP | Representa um grupo de linhas columnstore. | |
XACT | Representa uma transação. Ocorre quando o bloqueio otimizado está habilitado. | Há dois cenários: Cenário 1 (Proprietário) - tipo de recurso: XACT .- Descrição do recurso: quando um bloqueio TID é mantido, o resource_description é o XACT 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 uma solicitação aguarda um bloqueio TID, o resource_description é o XACT recurso seguido pelo recurso subjacente KEY ou RID - ID da entidade associada ao recurso: resource_associated_entity_id é o ID do HoBt subjacente. |
Observação
A documentação usa o termo árvore B geralmente em referência a índices. Em índices rowstore, o Mecanismo de Banco de Dados implementa uma árvore B+. Isso não se aplica a índices columnstore ou índices em tabelas com otimização de 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. |
KEY | <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 | O ID HoBt está incluído como o resource_associated_entity_id arquivo . |
ALLOCATION_UNIT | Não aplicável | A ID da Unidade de Alocação está incluída como .resource_associated_entity_id |
XACT | <dbid>:<XdesId low>:<XdesId high> |
O recurso TID (ID da transação). Ocorre quando o bloqueio otimizado está habilitado. |
CHAVE DE XACT | [XACT <dbid>:<XdesId low>:<XdesId High>] KEY (<hash_value>) |
O recurso subjacente que a transação está aguardando, com um objeto index KEY. Ocorre quando o bloqueio otimizado está habilitado. |
XACT RID | [XACT <dbid>:<XdesId low>:<XdesId High>] RID (<file_id>:<page_in_file>:<row_on_page>) |
O recurso subjacente que a transação está aguardando, com um objeto RID de heap. Ocorre quando o bloqueio otimizado está habilitado. |
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. Usando sys.dm_tran_locks
e outras ferramentas, são fornecidas informações sobre o bloqueio de recursos.
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 deve <dbid>
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
B. Vincular informações de sessão a threads do sistema operacional
O exemplo a seguir retorna informações que associam a session_id
a 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