sys.dm_tran_locks (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW) Warehouse en Microsoft Fabric

Devuelve información acerca de los recursos del administrador de bloqueos activos actualmente en SQL Server. Cada fila representa una solicitud activa al administrador de bloqueos sobre un bloqueo que se ha concedido o está esperando a ser concedido.

Las columnas del conjunto de resultados se dividen en dos grupos principales: recurso y solicitud. El grupo sobre el recurso describe el recurso en que se ha solicitado realizar el bloqueo; el grupo sobre la solicitud describe la solicitud de bloqueo.

Nota:

Para llamar a esto desde Azure Synapse Analytics o Analytics Platform System (PDW), use el nombre sys.dm_pdw_nodes_tran_locks. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Nombre de la columna Tipo de datos Descripción
resource_type nvarchar(60) Representa el tipo de recurso. El valor puede ser:

DATABASE

ARCHIVO

OBJECT

PAGE

KEY

EXTENT

RID (id. de fila)

APPLICATION

METADATOS

HOBT (montón o árbol B)

ALLOCATION_UNIT

XACT (transacción)

OIB (compilación de índice en línea)

ROW_GROUP
resource_subtype nvarchar(60) Representa un subtipo de resource_type. Adquirir un bloqueo de subtipo sin contener un bloqueo no subtipo del tipo primario es técnicamente válido. Los subtipos diferentes no entran en conflicto entre sí o con el tipo primario no subtipo. No todos los tipos de recurso tienen subtipos.
resource_database_id int Id. de la base de datos en la que se centra este recurso. Todos los recursos manejados por el administrador de bloqueos tienen como ámbito el Id. de la base de datos.
resource_description nvarchar(256) Descripción del recurso que solo contiene información que no está disponible en otras columnas de recurso.
resource_associated_entity_id bigint Id. de la entidad en una base de datos a la que se asocia un recurso. Puede ser un identificador de objeto, un id. de HOBT o un identificador de unidad de asignación, según el tipo de recurso.
resource_lock_partition Int Id. de la partición de bloqueo para un recurso de bloqueo dividido. El valor de los recursos de bloqueo sin particiones es 0.
request_mode nvarchar(60) Modo de la solicitud. En el caso de solicitudes concedidas, se trata del modo concedido; en el caso de solicitudes en espera, se trata del modo que se está solicitando.

NULL = No se concede acceso al recurso. Sirve como marcador de posición.

Sch-S (Schema stability) = Garantiza que un elemento de un esquema, como una tabla o un índice, no se quite mientras una sesión mantenga un bloqueo de estabilidad del esquema sobre él.

Sch-M (Schema modification) = Debe mantenerlo cualquier sesión que desee cambiar el esquema del recurso especificado. Garantiza que ninguna otra sesión se refiera al objeto indicado.

S (Shared) = La sesión que lo mantiene se le concede acceso compartido al recurso.

U (Update) = Indica que se ha obtenido un bloqueo de actualización sobre recursos que finalmente se pueden actualizar. Se utiliza para evitar una forma común de interbloqueo que tiene lugar cuando varias sesiones bloquean recursos para una posible actualización en el futuro.

X (Exclusive) = La sesión que lo mantiene recibe acceso exclusivo al recurso.

IS (Intent Shared) = Indica la intención de establecer bloqueos S en algún recurso subordinado de la jerarquía de bloqueos.

IU (Intent Update) = Indica la intención de establecer bloqueos U en algún recurso subordinado de la jerarquía de bloqueos.

IX (Intent Exclusive) = Indica la intención de establecer bloqueos X en algún recurso subordinado de la jerarquía de bloqueos.

SIU (Shared Intent Update) = Indica el acceso compartido a un recurso con la intención de obtener bloqueos de actualización sobre recursos subordinados en la jerarquía de bloqueos.

SIX (Shared Intent Exclusive) = Indica el acceso compartido a un recurso con la intención de obtener bloqueos exclusivos sobre recursos subordinados en la jerarquía de bloqueos.

UIX (Update Intent Exclusive) = Indica que se mantiene un bloqueo de actualización en un recurso con la intención de obtener bloqueos exclusivos sobre recursos subordinados en la jerarquía de bloqueos.

BU = Se utiliza en operaciones masivas.

RangeS_S (Shared Key-Range and Shared Resource lock) = Indica el examen de intervalo serializable.

RangeS_U (Shared Key-Range and Update Resource lock) = Indica el examen de intervalo serializable.

RangeI_N (Insert Key-Range and Null Resource lock) = Se utiliza para comprobar los intervalos antes de insertar una nueva clave en un índice.

RangeI_S = Bloqueo de conversión de intervalo de claves, creado por una superposición de los bloqueos RangeI_N y S.

RangeI_U = Bloqueo de conversión de intervalo de claves creado por una superposición de bloqueos RangeI_N y U.

RangeI_X = Bloqueo de conversión de intervalo de claves creado por una superposición de bloqueos RangeI_N y X.

RangeX_S = Bloqueo de conversión de rango de claves creado por una superposición de bloqueos RangeI_N y RangeS_S .

RangeX_U = Bloqueo de conversión de intervalo de claves, creado por una superposición de bloqueos RangeI_N y RangeS_U.

RangeX_X (Exclusive Key-Range and Exclusive Resource lock) = Se trata de un bloqueo de conversión que se usa al actualizar una clave en un intervalo.
request_type nvarchar(60) Tipo de solicitud. El valor es LOCK.
request_status nvarchar(60) Estado actual de esta solicitud. Los valores posibles son GRANTED, CONVERT, WAIT, LOW_PRIORITY_CONVERT, LOW_PRIORITY_WAIT o ABORT_BLOCKERS. Para más información acerca de los bloqueadores de anulación y esperas de prioridad baja, vea la sección ow_priority_lock_wait de ALTER INDEX (Transact-SQL).
request_reference_count smallint Devuelve un número aproximado de veces que el mismo solicitante ha requerido este recurso.
request_lifetime int Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
request_session_id int session_id que posee actualmente esta solicitud. El propietario session_id puede cambiar para las transacciones distribuidas y enlazadas. Un valor de -2 indica que la solicitud pertenece a una transacción distribuida huérfana. Un valor de indica que la solicitud pertenece a una transacción de -3 recuperación diferida, como una transacción para la que se ha aplazado una reversión en la recuperación porque la reversión no se pudo completar correctamente.
request_exec_context_id int Id. del contexto de ejecución del proceso que posee actualmente esta solicitud.
request_request_id int request_id (identificador de lote) del proceso que posee actualmente esta solicitud. Este valor cambia cada vez que cambia la conexión activa de conjunto de resultados activos (MARS) para una transacción.
request_owner_type nvarchar(60) Tipo de entidad que posee la solicitud. Las solicitudes del administrador de bloqueos pueden ser propiedad de varios tipos de entidades. Los valores posibles son:

TRANSACTION = La solicitud es propiedad de una transacción.

CURSOR = La solicitud es propiedad de un cursor.

SESSION = La solicitud es propiedad de una sesión de usuario.

SHARED_TRANSACTION_WORKSPACE = La solicitud es propiedad de la parte compartida del área de trabajo de la transacción.

EXCLUSIVE_TRANSACTION_WORKSPACE = La solicitud es propiedad de la parte exclusiva del área de trabajo de la transacción.

NOTIFICATION_OBJECT = La solicitud es propiedad de un componente interno de SQL Server. Este componente ha solicitado al administrador de bloqueos que le notifique cuándo otro componente está a la espera del bloqueo. La característica FileTable es un componente que utiliza este valor.

Nota: Las áreas de trabajo se utilizan internamente con el fin de mantener bloqueos para sesiones dadas de alta.
request_owner_id bigint Identificador del propietario específico de esta solicitud.

Si una transacción es la propietaria de la solicitud, este valor contiene el identificador de transacción

Cuando una FileTable es el propietario de la solicitud, request_owner_id tiene uno de los siguientes valores:
  • -4 : Una FileTable ha tomado un bloqueo de base de datos.
  • -3 : FileTable ha tomado un bloqueo de tabla.
  • Otro valor: el valor representa un identificador de archivos. Este valor también aparece como fcb_id en la vista de administración dinámica sys.dm_filestream_non_transacted_handles (Transact-SQL).
request_owner_guid uniqueidentifier GUID del propietario específico de esta solicitud. Este valor solo se utiliza en una transacción distribuida cuando el valor corresponde al GUID del servicio MS DTC para esa transacción.
request_owner_lockspace_id nvarchar(32) Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada. Este valor representa el Id. del espacio de bloqueo del solicitante. El Id. del espacio de bloqueo determina si dos solicitantes son compatibles entre sí y si pueden tener bloqueos en modos que, de otra forma, entrarían en conflicto entre sí.
lock_owner_address varbinary(8) Dirección de memoria de la estructura de datos interna utilizada para realizar el seguimiento de esta solicitud. Esta columna se puede combinar con resource_address en sys.dm_os_waiting_tasks.
pdw_node_id int Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Identificador del nodo en el que se encuentra esta distribución.

Permisos

En SQL Server y SQL Managed Instance, requiere el permiso VIEW SERVER STATE.

En los objetivos de servicio Básico, S0 y S1 de SQL Database y para bases de datos en grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador Microsoft Entra o la pertenencia al ##MS_ServerStateReader## rol del servidor. En el resto de objetivos del servicio de SQL Database, se requiere el permiso VIEW DATABASE STATE en la base de datos o la pertenencia en el rol del servidor ##MS_ServerStateReader##.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VER ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.

Observaciones

Un estado de solicitud Granted indica que se ha concedido el bloqueo sobre un recurso al solicitante. Una solicitud en espera indica que la solicitud aún no se ha concedido. La columna devuelve request_status los siguientes tipos de solicitud en espera:

  • Un estado de solicitud Convert indica que el solicitante ya tiene concedida una solicitud para un recurso y está esperando la concesión de una actualización a la solicitud inicial.

  • Un estado de solicitud Wait indica que el solicitante no tiene concedida actualmente ninguna solicitud sobre el recurso.

Dado que sys.dm_tran_locks se rellena desde estructuras de datos internas del administrador de bloqueos, el mantenimiento de esta información no agrega sobrecarga adicional al procesamiento normal. Materializar la vista requiere acceso a las estructuras de datos internas del administrador de bloqueos. Esto puede tener consecuencias menores en el procesamiento normal en el servidor. Puede que no perciba estas consecuencias o que solo afecten a los recursos con un alto grado de utilización. Como los datos de esta vista corresponden al estado activo del administrador de bloqueos, estos se pueden cambiar en cualquier momento; además, las filas se agregan y quitan según se van adquiriendo y liberando bloqueos. Es posible que las aplicaciones que consulten esta vista tengan un rendimiento impredecible debido a la naturaleza de protección de la integridad de las estructuras del administrador de bloqueos. Esta vista no tiene información histórica.

Dos solicitudes funcionan en el mismo recurso solamente si todas las columnas del grupo de recursos son iguales.

Puede controlar el bloqueo de operaciones de lectura mediante las siguientes herramientas:

Un recurso que se ejecuta en uno session_id puede tener más de un bloqueo concedido. Las distintas entidades que se ejecutan en una sesión pueden poseer un bloqueo en el mismo recurso y la información se muestra en las request_owner_type columnas y request_owner_id que devuelve sys.dm_tran_locks. Si existen varias instancias de la misma request_owner_type , la request_owner_id columna se usa para distinguir cada instancia. Para las transacciones distribuidas, las request_owner_type columnas y request_owner_guid muestran la información de entidad diferente.

Por ejemplo, Session S1 posee un bloqueo compartido en Table1; y la transacción T1, que se ejecuta en la sesión S1, también posee un bloqueo compartido en Table1. En este caso, la resource_description columna devuelta por sys.dm_tran_locks muestra dos instancias del mismo recurso. La request_owner_type columna muestra una instancia como una sesión y la otra como una transacción. Además, la resource_owner_id columna tiene valores diferentes.

No es posible distinguir varios cursores que se ejecutan en una misma sesión y, por tanto, se tratan como una sola entidad.

Las transacciones distribuidas que no están asociadas a un session_id valor son transacciones huérfanas y se les asigna el session_id valor de -2. Para más información, consulte KILL (Transact-SQL).

Bloqueos

Se mantienen bloqueos en recursos de SQL Server , como filas leídas o modificadas durante una transacción, para evitar que varias transacciones utilicen simultáneamente los recursos. Por ejemplo, si una transacción mantiene un bloqueo exclusivo (X) en una fila de una tabla, ninguna otra transacción podrá modificar esa fila hasta que se libere el bloqueo. La reducción de bloqueos aumenta la simultaneidad, lo que puede mejorar el rendimiento.

Detalles del recurso

En la tabla siguiente se enumeran los recursos que se representan en la resource_associated_entity_id columna .

Tipo de recurso Descripción del recurso resource_associated_entity_id
DATABASE Representa una base de datos. No aplicable
ARCHIVO Representa un archivo de la base de datos. Este archivo puede ser un archivo de datos o de registro. No aplicable
OBJECT Representa un objeto de una base de datos. Este objeto puede ser una tabla de datos, una vista, un procedimiento almacenado, un procedimiento almacenado extendido o cualquier objeto que tenga un Id. de objeto. Identificador de objeto
PAGE Representa una página de un archivo de datos. Identificador de HoBt. Este valor corresponde a sys.partitions.hobt_id. El identificador de HoBt no está siempre disponible para recursos PAGE, ya que es información adicional que puede proporcionar el autor de la llamada y no todos los autores de llamadas pueden proporcionar esta información.
KEY Representa una fila en un índice. Identificador de HoBt. Este valor corresponde a sys.partitions.hobt_id.
EXTENT Representa la extensión de un archivo de datos. Una extensión es un grupo de ocho páginas contiguas. No aplicable
RID Representa una fila física en un montón. Identificador de HoBt. Este valor corresponde a sys.partitions.hobt_id. El identificador de HoBt no está siempre disponible para recursos RID, ya que es información adicional que puede proporcionar el autor de la llamada y no todos los autores de llamadas pueden proporcionar esta información.
APPLICATION Representa un recurso específico de aplicación. No aplicable
METADATOS Representa información de metadatos. No aplicable
HOBT Representa un montón o un árbol b. Se trata de las estructuras de ruta de acceso básicas. Identificador de HoBt. Este valor corresponde a sys.partitions.hobt_id.
OIB Representa el índice en línea (re)build. Identificador de HoBt. Este valor corresponde a sys.partitions.hobt_id.
ALLOCATION_UNIT Representa un conjunto de páginas relacionadas, por ejemplo, una partición de índice. Cada unidad de asignación cubre una única cadena del Mapa de asignación de índices (IAM). Identificador de unidad de asignación. Este valor corresponde a sys.allocation_units.allocation_unit_id.
ROW_GROUP Representa un grupo de filas de almacén de columnas.
XACT Representa una transacción. Se produce cuando el bloqueo optimizado está habilitado. Hay dos escenarios:

Escenario 1 (propietario)
- Tipo de recurso: XACT.
- Descripción del recurso: cuando se mantiene un bloqueo TID, resource_description es el XACT recurso.
- Identificador de entidad asociado al recurso: resource_associated_entity_id es 0.

Escenario 2 (waiter)
- Tipo de recurso: XACT.
- Descripción del recurso: cuando una solicitud espera un bloqueo de TID, resource_description es el XACT recurso seguido del recurso subyacente KEY o RID del recurso.
- Identificador de entidad asociada al recurso: resource_associated_entity_id es el identificador de HoBt subyacente.

Nota:

La documentación usa el término árbol B generalmente en referencia a índices. En los índices de almacén de filas, el Motor de base de datos implementa un árbol B+. Esto no se aplica a índices o índices de almacén de columnas en tablas optimizadas para memoria. Para obtener más información, consulte la guía de diseño y arquitectura de índices de SQL Server y Azure SQL.

En la tabla siguiente se muestran los subtipos asociados a cada tipo de recurso.

Subtipo de recurso Sincronizaciones
ALLOCATION_UNIT.BULK_OPERATION_PAGE Las páginas preasignadas usadas para operaciones masivas.
ALLOCATION_UNIT.PAGE_COUNT Estadísticas de recuentos de páginas de unidades de asignación durante operaciones de eliminación diferida.
DATABASE.BULKOP_BACKUP_DB Copias de seguridad de base de datos con operaciones masivas.
DATABASE.BULKOP_BACKUP_LOG Copias de seguridad de registros de base de datos con operaciones masivas.
DATABASE.CHANGE_TRACKING_CLEANUP Tareas de limpieza de seguimiento de cambios.
DATABASE.CT_DDL Operaciones DDL de seguimiento de cambios de nivel de tabla y base de datos.
DATABASE.CONVERSATION_PRIORITY Operaciones de prioridad de conversación de Service Broker como CREATE BROKER PRIORITY.
DATABASE.DDL Operaciones del Lenguaje de definición de datos (DDL) con operaciones de grupo de archivos, como la eliminación.
DATABASE.ENCRYPTION_SCAN Sincronización de cifrado de TDE.
DATABASE.PLANGUIDE Sincronización de la guía de plan.
DATABASE.RESOURCE_GOVERNOR_DDL Operaciones DDL para las operaciones de gobernador de recursos como ALTER RESOURCE POOL.
DATABASE.SHRINK Operaciones de reducción de la base de datos.
DATABASE.STARTUP Se usa para la sincronización de inicios de bases de datos.
FILE.SHRINK Operaciones de reducción de archivos.
HOBT.BULK_OPERATION Operaciones de carga masiva optimizadas para montones con recorrido simultáneo bajo estos niveles de aislamiento: instantánea, lectura no confirmada y lectura confirmada con versiones de fila.
HOBT.INDEX_REORGANIZE Operaciones de reorganización del montón o el índice.
OBJECT.COMPILE Compilación de procedimiento almacenado.
OBJECT.INDEX_OPERATION Operaciones de índice.
OBJECT.UPDSTATS Actualizaciones de estadísticas en una tabla.
METADATA.ASSEMBLY Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ASSEMBLY_CLR_NAME Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ASSEMBLY_TOKEN Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ASYMMETRIC_KEY Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.AUDIT Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.AUDIT_ACTIONS Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.AUDIT_SPECIFICATION Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.AVAILABILITY_GROUP Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CERTIFICATE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CHILD_INSTANCE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.COMPRESSED_FRAGMENT Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.COMPRESSED_ROWSET Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CONVERSATION_ENDPOINT_RECV Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CONVERSATION_ENDPOINT_SEND Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CONVERSATION_GROUP Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CONVERSATION_PRIORITY Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CREDENTIAL Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CRYPTOGRAPHIC_PROVIDER Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DATA_SPACE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DATABASE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DATABASE_PRINCIPAL Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DB_MIRRORING_SESSION Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DB_MIRRORING_WITNESS Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DB_PRINCIPAL_SID Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ENDPOINT Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ENDPOINT_WEBMETHOD Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.EXPR_COLUMN Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.EXPR_HASH Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.FULLTEXT_CATALOG Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.FULLTEXT_INDEX Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.FULLTEXT_STOPLIST Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.INDEX_EXTENSION_SCHEME Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.INDEXSTATS Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.INSTANTIATED_TYPE_HASH Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.MESSAGE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.METADATA_CACHE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PARTITION_FUNCTION Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PASSWORD_POLICY Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PERMISSIONS Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PLAN_GUIDE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PLAN_GUIDE_HASH Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PLAN_GUIDE_SCOPE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.QNAME Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.QNAME_HASH Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.REMOTE_SERVICE_BINDING Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ROUTE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SCHEMA Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SECURITY_CACHE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SECURITY_DESCRIPTOR Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SEQUENCE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVER_EVENT_SESSIONS Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVER_PRINCIPAL Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVICE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVICE_BROKER_GUID Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVICE_CONTRACT Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVICE_MESSAGE_TYPE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.STATS Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SYMMETRIC_KEY Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.USER_TYPE Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.XML_COLLECTION Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.XML_COMPONENT Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.XML_INDEX_QNAME Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

En la tabla siguiente se proporciona el formato de la resource_description columna para cada tipo de recurso.

Resource Formato Descripción
DATABASE No aplicable El identificador de base de datos ya está disponible en la resource_database_id columna .
ARCHIVO <file_id> Id. del archivo representado por este recurso.
OBJECT <object_id> Id. del objeto representado por este recurso. Este objeto puede ser cualquier objeto enumerado en sys.objects, no solo una tabla.
PAGE <file_id>:<page_in_file> Representa el Id. de página y de archivo de la página representada por este recurso.
KEY <hash_value> Representa un hash de las columnas de clave de la fila representada por este recurso.
EXTENT <file_id>:<page_in_files> Representa el Id. de página y de archivo de la extensión representada por este recurso. El Id. de extensión es el mismo que el Id. de página correspondiente a la primera página de la extensión.
RID <file_id>:<page_in_file>:<row_on_page> Representa el Id. de página y de fila de la fila representada por este recurso. Si el identificador de objeto asociado es 99, este recurso representa una de las ocho ranuras de página mixta en la primera página de IAM de una cadena de IAM.
APPLICATION <DbPrincipalId>:<up to 32 characters>:(<hash_value>) Representa el Id. de la entidad de seguridad de base de datos utilizada para asignar el ámbito de este recurso de bloqueo de aplicación. También se incluyen hasta 32 caracteres de la cadena del recurso correspondiente a este recurso de bloqueo de la aplicación. En algunos casos, solo se pueden mostrar dos caracteres debido a que la cadena completa ya no está disponible. Este comportamiento solo se produce en tiempo de recuperación de la base de datos para bloqueos de aplicaciones que se vuelven a adquirir como parte del proceso de recuperación. El valor hash representa un hash de la cadena de recurso completa correspondiente a este recurso de bloqueo de la aplicación.
HOBT No aplicable El identificador de HoBt se incluye como .resource_associated_entity_id
ALLOCATION_UNIT No aplicable El identificador de unidad de asignación se incluye como .resource_associated_entity_id
XACT <dbid>:<XdesId low>:<XdesId high> El recurso TID (id. de transacción). Se produce cuando el bloqueo optimizado está habilitado.
XACT KEY [XACT <dbid>:<XdesId low>:<XdesId High>] KEY (<hash_value>) El recurso subyacente en el que la transacción está esperando, con un objeto KEY de índice. Se produce cuando el bloqueo optimizado está habilitado.
XACT RID [XACT <dbid>:<XdesId low>:<XdesId High>] RID (<file_id>:<page_in_file>:<row_on_page>) El recurso subyacente en el que la transacción está esperando, con un objeto RID del montón. Se produce cuando el bloqueo optimizado está habilitado.
METADATA.ASSEMBLY assembly_id = A Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ASSEMBLY_CLR_NAME $qname_id = Q Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ASSEMBLY_TOKEN assembly_id = A, $token_id Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ASYMMETRIC_KEY asymmetric_key_id = A Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.AUDIT audit_id = A Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.AUDIT_ACTIONS device_id = D, major_id = M Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.AUDIT_SPECIFICATION audit_specification_id = A Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.AVAILABILITY_GROUP availability_group_id = A Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CERTIFICATE certificate_id = C Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CHILD_INSTANCE $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.COMPRESSED_FRAGMENT object_id = O , compressed_fragment_id = C Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.COMPRESSED_ROW object_id = O Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CONVERSATION_ENDPOINT_RECV $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CONVERSATION_ENDPOINT_SEND $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CONVERSATION_GROUP $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CONVERSATION_PRIORITY conversation_priority_id = C Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CREDENTIAL credential_id = C Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.CRYPTOGRAPHIC_PROVIDER provider_id = P Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DATA_SPACE data_space_id = D Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DATABASE database_id = D Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DATABASE_PRINCIPAL principal_id = P Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DB_MIRRORING_SESSION database_id = D Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DB_MIRRORING_WITNESS $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.DB_PRINCIPAL_SID $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ENDPOINT endpoint_id = E Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ENDPOINT_WEBMETHOD $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.FULLTEXT_INDEX object_id = O Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.EXPR_COLUMN object_id = O, column_id = C Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.EXPR_HASH object_id = O, $hash = H Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.FULLTEXT_CATALOG fulltext_catalog_id = F Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.FULLTEXT_INDEX object_id = O Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.FULLTEXT_STOPLIST fulltext_stoplist_id = F Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.INDEX_EXTENSION_SCHEME index_extension_id = I Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.INDEXSTATS object_id = O, index_id o stats_id = I Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.INSTANTIATED_TYPE_HASH user_type_id = U, hash = H Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.MESSAGE message_id = M Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.METADATA_CACHE $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PARTITION_FUNCTION function_id = F Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PASSWORD_POLICY principal_id = P Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PERMISSIONS class = C Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PLAN_GUIDE plan_guide_id = P Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PLAN_GUIDE_HASH $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.PLAN_GUIDE_SCOPE scope_id = S Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.QNAME $qname_id = Q Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.QNAME_HASH $qname_scope_id = Q, $qname_hash = H Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.REMOTE_SERVICE_BINDING remote_service_binding_id = R Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.ROUTE route_id = R Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SCHEMA schema_id = S Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SECURITY_CACHE $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SECURITY_DESCRIPTOR sd_id = S Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SEQUENCE $seq_type = S, object_id = O Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVER server_id = S Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVER_EVENT_SESSIONS event_session_id = E Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVER_PRINCIPAL principal_id = P Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVICE service_id = S Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVICE_BROKER_GUID $hash = H1:H2:H3 Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVICE_CONTRACT service_contract_id = S Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SERVICE_MESSAGE_TYPE message_type_id = M Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.STATS object_id = O, stats_id = S Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.SYMMETRIC_KEY symmetric_key_id = S Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.USER_TYPE user_type_id = U Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.XML_COLLECTION xml_collection_id = X Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.XML_COMPONENT xml_component_id = X Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.
METADATA.XML_INDEX_QNAME object_id = O, $qname_id = Q Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

Ejemplos

A Uso de sys.dm_tran_locks con otras herramientas

En el ejemplo siguiente se trabaja con un escenario en el que una operación de actualización ha sido bloqueada por otra transacción. Mediante el uso sys.dm_tran_locks y otras herramientas, se proporciona información sobre el bloqueo 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;

La consulta siguiente muestra información de bloqueo. El valor de <dbid> debe reemplazarse por de database_id 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>;

La siguiente consulta devuelve información de objetos de la consulta anterior mediante resource_associated_entity_id. Esta consulta debe ejecutarse mientras se esté conectado a la base de datos que contiene el objeto.

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

En la consulta siguiente se muestra información de bloqueo.

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 los recursos revirtiendo las transacciones.

-- Session 1
ROLLBACK;
GO

-- Session 2
ROLLBACK;
GO

En el ejemplo siguiente se devuelve información que asocia a session_id un identificador de subproceso de Windows. El rendimiento del subproceso puede supervisarse en el Monitor de rendimiento de Windows. Esta consulta no devuelve un session_id que está actualmente en suspensión.

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