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, FILE, OBJECT, PAGE, KEY, EXTENT, RID, APPLICATION, METADATA, HOBT, ALLOCATION_UNIT o XACT. |
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 Id. de objeto, de Hobt o de unidad de asignación, dependiendo del 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:
|
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 de SQL Database Basic, S0 y S1, y para las bases de datos de grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador de Microsoft Entra o la pertenencia al rol de ##MS_ServerStateReader##
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:
SET TRANSACTION ISOLATION LEVEL para especificar el nivel de bloqueo de una sesión. Para obtener más información, vea SET TRANSACTION ISOLATION LEVEL (Transact-SQL).
Sugerencias de bloqueo de tablas para especificar el nivel de bloqueo para una referencia individual de una tabla en una cláusula FROM. Para conocer la sintaxis y las restricciones, consulte Sugerencias de tabla (Transact-SQL).
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 la 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 . |
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 . |
XACT | El recurso XACT. Relacionado con el bloqueo optimizado. | 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 esperamos 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 de SQL Server utiliza el término árbol B generalmente en referencia a los índices. En los índices del almacén de filas, SQL Server implementa un árbol B+. Esto no se aplica a los índices de almacén de columnas ni a los almacenes de datos en 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> |
Recurso TID. Relacionado con el bloqueo optimizado. |
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 agrupado. Relacionado con el bloqueo optimizado. |
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. Relacionado con el bloqueo optimizado. |
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
B. Vinculación de la información de sesión a subprocesos del sistema operativo
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