sp_lock (Transact-SQL)

 

ESTE TEMA SE APLICA A:síSQL Server (a partir de 2008)noBase de datos SQL de AzurenoAlmacenamiento de datos SQL de Azure noAlmacenamiento de datos paralelos

Genera información acerca de los bloqueos.

System_CAPS_ICON_important.jpg Importante


Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.Para obtener información sobre los bloqueos en el Motor de base de datos de SQL Server, use la sys.dm_tran_locks vista de administración dinámica.

Se aplica a: SQL Server (desdeSQL Server 2008 hasta la versión actual).

Topic link icon Convenciones de sintaxis de Transact-SQL

  
sp_lock [ [ @spid1 = ] 'session ID1' ] [ , [@spid2 = ] 'session ID2' ]  
[ ; ]  

[ @spid1 = ] 'session ID1'
Es un Motor de base de datos número de Id. de sesión de sys.dm_exec_sessions para que el usuario desea información de bloqueo. sesión ID1 es int con un valor predeterminado es NULL. Ejecutar sp_who para obtener información de proceso acerca de la sesión. Si sesión ID1 no se especifica, se muestra información sobre todos los bloqueos.

[ @spid2 = ] 'session ID2'
Es otra Motor de base de datos número de Id. de sesión de sys.dm_exec_sessions que puede tener un bloqueo al mismo tiempo como sesión ID1 y sobre los que el usuario también desea obtener información. sesión ID2 es int con un valor predeterminado es NULL.

0 (correcto)

El sp_lock conjunto de resultados contiene una fila por cada bloqueo de las sesiones especificadas en el ** @spid1 ** y ** @spid2 ** parámetros. Si no ** @spid1 ** ni ** @spid2 ** se especifica, el conjunto de resultados informa los bloqueos para todas las sesiones actualmente activas en la instancia de la Motor de base de datos.

Nombre de columnaTipo de datosDescription
SPIDsmallintNúmero de Id. de sesión del Motor de base de datos del proceso que solicita el bloqueo.
dbidsmallintEl número de identificación de la base de datos en la que se mantiene el bloqueo. Puede utilizar la función DB_NAME() para identificar la base de datos.
ObjIdintEl número de identificación del objeto en el que se mantiene el bloqueo. Puede utilizar la función OBJECT_NAME() en la base de datos relacionada para identificar el objeto. El valor 99 constituye un caso especial que indica un bloqueo en una de las páginas del sistema utilizadas para registrar la asignación de páginas en una base de datos.
IndIdsmallintNúmero de identificación del índice en el que se mantiene el bloqueo.
Tiponchar(4)Tipo de bloqueo.

RID = Bloqueo en una única fila de una tabla identificada por un identificador de fila (RID).

KEY = Bloqueo en un índice que protege un intervalo de claves en transacciones serializables.

PAG = Bloqueo en una página de datos o de índices.

EXT = Bloqueo en una extensión.

TAB = Bloqueo en toda una tabla, incluidos todos los datos y los índices.

DB = Bloqueo en una base de datos.

FIL = Bloqueo en un archivo de base de datos.

APP = Bloqueo en un recurso especificado por la aplicación.

MD = Bloqueos de metadatos o información de catálogo.

HBT = Bloqueo en un índice de montón o de árbol b. Esta información está incompleta en SQL Server.

AU = Bloqueo en una unidad de asignación. Esta información está incompleta en SQL Server.
Recursosnchar(32)El valor que identifica el recurso bloqueado. El formato del valor depende del tipo de recurso identificado en el tipo columna:

 Tipo de valor: recursos valor

RID: un identificador con formato fileid:pagenumber:rid, donde fileid identifica el archivo que contiene la página, pagenumber identifica la página que contiene la fila y rid identifica la fila específica en la página. FileID coincide con el file_id columna en el sys.database_files vista de catálogo.

KEY: un número hexadecimal utilizado internamente por Motor de base de datos.

PAG: un número con formato idDeArchivo:númeroDePágina, donde idDeArchivo identifica el archivo que contiene la página y númeroDePágina identifica la página.

EXT: un número que identifica la primera página de la extensión. El número tiene un formato idDeArchivo:númeroDePágina.

PESTAÑA: No se proporciona información porque la tabla ya se ha identificado en el ObjId columna.

DB: No se proporciona información porque la base de datos se ha identificado en el dbid columna.

FIL: El identificador del archivo, que coincide con el file_id columna en el sys.database_files vista de catálogo.

APP: un identificador único para el recurso de la aplicación que se está bloqueando. En el formato DbPrincipleId:<first two="" to="" 16="" characters="" of="" the="" resource="" string="">>.

MD: varía por tipo de recurso. Para obtener más información, vea la descripción de la resource_description columna en sys.dm_tran_locks (Transact-SQL).

HBT: no se proporciona información. Use la sys.dm_tran_locks vista de administración dinámica en su lugar.

AU: no se proporciona información. Use la sys.dm_tran_locks vista de administración dinámica en su lugar.
Modonvarchar (8)El modo de bloqueo solicitado. Puede ser:

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

Sch-S = Estabilidad del esquema. 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 = Modificación del esquema. 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 = Compartido. La sesión que lo mantiene recibe acceso compartido al recurso.

U = Actualizar. 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 más adelante.

X = Exclusivo. La sesión que lo mantiene recibe acceso exclusivo al recurso.

IS = Intención compartida. Indica la intención de establecer bloqueos S en algún recurso subordinado de la jerarquía de bloqueos.

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

IX = intención exclusiva. Indica la intención de colocar bloqueos X en algunos recursos subordinados en la jerarquía de bloqueos.

SIU = Actualizar intención compartida. 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 = Intención compartida exclusiva. Indica acceso compartido a un recurso con la intención de obtener bloqueos exclusivos sobre recursos subordinados de la jerarquía de bloqueos.

UIX = Actualizar intención exclusiva. Indica un bloqueo de actualización en un recurso con la intención de adquirir bloqueos exclusivos sobre recursos subordinados en la jerarquía de bloqueos.

BU = Actualización masiva. Utilizado en las operaciones masivas.

RangeS_S = Intervalo de claves compartido y bloqueo de recurso compartido. Indica recorrido de intervalo serializable.

RangeS_U = Intervalo de claves compartido y bloqueo de recurso de actualización. Indica recorrido de actualización serializable.

RangeI_N = Insertar intervalo de claves y bloqueo de recurso Null. Se utiliza para probar los intervalos antes de insertar una clave nueva en un índice.

RangeI_S = Bloqueo de conversión de intervalo de claves. Creado por una superposición de 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 bloqueos.

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

RangeX_X = Intervalo de claves exclusivo y bloqueo de recurso exclusivo. Es un bloqueo de conversión que se utiliza cuando se actualiza una clave de un intervalo.
Estadonvarchar (5)Estado de solicitud de bloqueo:

CNVRT: el bloqueo se está convirtiendo desde otro modo, pero la conversión es bloqueada por otro proceso que mantiene un bloqueo con un modo en conflicto.

GRANT: se ha obtenido el bloqueo.

WAIT: el bloqueo es bloqueado por otro proceso que mantiene un bloqueo con un modo en conflicto.

Los usuarios pueden controlar el bloqueo de las operaciones de lectura:

  • Si utilizan SET TRANSACTION ISOLATION LEVEL para especificar el nivel de bloqueo de una sesión. Para la sintaxis y las restricciones, vea SET TRANSACTION ISOLATION LEVEL (Transact-SQL).

  • Si utilizan sugerencias de tabla de bloqueo para especificar el nivel de bloqueo de una referencia individual de una tabla en una cláusula FROM. Para la sintaxis y las restricciones, vea sugerencias de tabla (Transact-SQL).

Todas las transacciones distribuidas no asociadas a una sesión son transacciones huérfanas. El Motor de base de datos asigna a todas las transacciones distribuidas huérfanas el valor de SPID -2, lo que facilita al usuario la identificación de las transacciones distribuidas de bloqueo. Para obtener más información, vea Use Marked Transactions to Recover Related Databases Consistently (Full Recovery Model).

Requiere el permiso VIEW SERVER STATE.

A. Mostrar todos los bloqueos

En el ejemplo siguiente se muestra información acerca de todos los bloqueos mantenidos en una instancia de Motor de base de datos.

USE master;  
GO  
EXEC sp_lock;  
GO  

B. Mostrar un bloqueo de un proceso de servidor único

En el ejemplo siguiente se muestra información, incluidos los bloqueos, acerca del proceso con Id. 53.

USE master;  
GO  
EXEC sp_lock 53;  
GO  

Sys.dm_tran_locks (Transact-SQL)
Db_name (Transact-SQL)
KILL (Transact-SQL)
Object_name (Transact-SQL)
sp_who (Transact-SQL)
Sys.database_files (Transact-SQL)
Sys.dm_os_tasks (Transact-SQL)
Sys.dm_os_threads (Transact-SQL)

Adiciones de comunidad

AGREGAR
Mostrar: