Partilhar via


sp_releaseapplock (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Liberta um bloqueio num recurso de aplicação.

Transact-SQL convenções de sintaxe

Sintaxe

sp_releaseapplock
    [ [ @Resource = ] N'Resource' ]
    [ , [ @LockOwner = ] 'LockOwner' ]
    [ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]

Arguments

[ @Resource = ] N'Resource'

Um nome de recurso de bloqueio especificado pela aplicação cliente. @Resource é nvarchar(255), com um padrão de NULL. @Resource é comparado binariamente, pelo que é sensível a maiúsculas minúsculas independentemente das definições de colação da base de dados atual.

A aplicação deve garantir que o recurso é único. O nome especificado é hashado internamente num valor que pode ser armazenado no gestor de bloqueios do SQL Server.

[ @LockOwner = ] 'DonoFechaduras'

O proprietário da fechadura, que é o valor @LockOwner quando a fechadura foi solicitada. @LockOwner é varchar(32), com um padrão de Transaction. O valor também pode ser Session. Quando o valor @LockOwner é Transação, por defeito ou especificado explicitamente, sp_getapplock deve ser executado a partir de dentro de uma transação.

[ @DbPrincipal = ] N'DbDiretor'

O utilizador, função ou função de aplicação que tem permissões para um objeto numa base de dados. @DbPrincipal é sysname, com o padrão de public. O chamador da função deve ser membro de database_principal, dbo ou da db_owner função fixa na base de dados para conseguir chamar a função com sucesso.

Valores de código de retorno

>= 0 (sucesso), ou < 0 (fracasso).

Valor Result
0 Lock foi libertado com sucesso.
-999 Indica validação de parâmetros ou outro erro de chamada.

Observações

Quando uma aplicação chama sp_getapplock várias vezes para o mesmo recurso de bloqueio, sp_releaseapplock deve ser chamada o mesmo número de vezes para libertar o bloqueio.

Quando o servidor desliga por qualquer motivo, os bloqueios são libertados.

Permissions

Requer adesão à função pública de .

Examples

O exemplo seguinte liberta o bloqueio associado à transação atual no recurso Form1 na AdventureWorks2025 base de dados.

USE AdventureWorks2022;
GO

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

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