sp_releaseapplock (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Libera un bloqueo en un recurso de aplicación.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_releaseapplock
[ [ @Resource = ] N'Resource' ]
[ , [ @LockOwner = ] 'LockOwner' ]
[ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]
Argumentos
[ @Resource = ] N'Recurso'
Es un nombre de recurso de bloqueo especificado por la aplicación cliente. @Resource es nvarchar(255), con un valor predeterminado de NULL
. @Resource se compara binariamente, por lo que distingue mayúsculas de minúsculas independientemente de la configuración de intercalación de la base de datos actual.
La aplicación debe garantizar que el recurso es único. El nombre especificado se aplica un algoritmo hash internamente a un valor que se puede almacenar en el administrador de bloqueos de SQL Server.
[ @LockOwner = ] 'LockOwner'
Propietario del bloqueo, que es el @LockOwner valor cuando se solicitó el bloqueo. @LockOwner es varchar(32), con un valor predeterminado de Transaction
. El valor también puede ser Session
. Cuando el valor de @LockOwner es Transaction, de forma predeterminada o se especifica explícitamente, sp_getapplock
debe ejecutarse desde dentro de una transacción.
[ @DbPrincipal = ] N'DbPrincipal'
El usuario, rol o rol de aplicación que tiene permisos para un objeto de una base de datos. @DbPrincipal es sysname, con un valor predeterminado de public
. El autor de la llamada de la función debe ser miembro de database_principal, dbo o del rol fijo de base de datos db_owner para poder llamar a la función correctamente.
Valores de código de retorno
>= 0
(correcto) o < 0
(error).
Valor | Resultado |
---|---|
0 |
El bloqueo se ha liberado correctamente. |
-999 |
Indica un error de validación de parámetros u otro error de llamada. |
Comentarios
Cuando una aplicación llama sp_getapplock
varias veces para el mismo recurso de bloqueo, sp_releaseapplock
se debe llamar al mismo número de veces para liberar el bloqueo.
Los bloqueos se liberan si el servidor se cierra por cualquier razón.
Permisos
Debe pertenecer al rol public .
Ejemplos
En el ejemplo siguiente se libera el bloqueo asociado a la transacción actual en el recurso Form1
de la base de datos AdventureWorks2022
.
USE AdventureWorks2022;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo',
@Resource = 'Form1',
@LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo',
@Resource = 'Form1';
GO