Compartilhar via


sp_releaseapplock (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureBanco de dados SQL no Microsoft Fabric

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 AdventureWorks2025.

USE AdventureWorks2022;
GO

EXECUTE sp_getapplock
    @DbPrincipal = 'dbo',
    @Resource = 'Form1',
    @LockMode = 'Shared';

EXECUTE sp_releaseapplock
    @DbPrincipal = 'dbo',
    @Resource = 'Form1';
GO