sp_releaseapplock (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Libera um bloqueio em um recurso de aplicativo.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_releaseapplock
[ [ @Resource = ] N'Resource' ]
[ , [ @LockOwner = ] 'LockOwner' ]
[ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]
Argumentos
@Resource [ = ] N'Recurso'
Um nome de recurso de bloqueio especificado pelo aplicativo cliente. @Resource é nvarchar(255), com um padrão de NULL
. @Resource é comparada em binário, portanto, diferencia maiúsculas de minúsculas, independentemente das configurações de ordenação do banco de dados atual.
O aplicativo deve garantir que o recurso seja exclusivo. O nome especificado é hash internamente em um valor que pode ser armazenado no gerenciador de bloqueio do SQL Server.
@LockOwner [ = ] 'LockOwner'
O proprietário do bloqueio, que é o valor @LockOwner quando o bloqueio foi solicitado. @LockOwner é varchar(32), com um padrão de Transaction
. O valor também pode ser Session
. Quando o valor @LockOwner é Transaction, por padrão ou especificado explicitamente, sp_getapplock
deve ser executado de dentro de uma transação.
@DbPrincipal [ = ] N'DbPrincipal'
A função de usuário, função ou aplicativo que tem permissões para um objeto em um banco de dados. @DbPrincipal é sysname, com um padrão de public
. O chamador da função deve ser membro da função de banco de dados fixa database_principal, dbo ou db_owner para chamar a função com êxito.
Valores do código de retorno
>= 0
(sucesso) ou < 0
(fracasso).
Valor | Resultado |
---|---|
0 |
O bloqueio foi liberado com êxito. |
-999 |
Indica validação de parâmetro ou outro erro de chamada. |
Comentários
Quando um aplicativo chama sp_getapplock
várias vezes para o mesmo recurso de bloqueio, sp_releaseapplock
deve ser chamado o mesmo número de vezes para liberar o bloqueio.
Quando o servidor é desligado por algum motivo, os bloqueios são liberados.
Permissões
Requer associação à função pública .
Exemplos
O exemplo a seguir libera o bloqueio associado à transação atual no recurso Form1
do banco de dados AdventureWorks2022
.
USE AdventureWorks2022;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo',
@Resource = 'Form1',
@LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo',
@Resource = 'Form1';
GO