Partager via


sp_releaseapplock (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Libère un verrou appliqué à une ressource d'application.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @Resource = ] N'Ressource'

Nom de ressource de verrouillage spécifié par l'application cliente. @Resource est nvarchar(255), avec la valeur par défaut NULL. @Resource est binaire comparé, il respecte donc la casse indépendamment des paramètres de classement de la base de données active.

L'application doit veiller à ce que la ressource soit unique. Le nom spécifié est haché en interne dans une valeur qui peut être stockée dans le gestionnaire de verrous SQL Server.

[ @LockOwner = ] 'LockOwner'

Propriétaire du verrou, qui est la valeur @LockOwner lorsque le verrou a été demandé. @LockOwner est varchar(32), avec la valeur par défaut Transaction. La valeur peut également être Session. Lorsque la valeur @LockOwner est Transaction, par défaut ou spécifiée explicitement, sp_getapplock doit être exécutée à partir d’une transaction.

[ @DbPrincipal = ] N'DbPrincipal'

Rôle d’utilisateur, de rôle ou d’application disposant d’autorisations pour un objet dans une base de données. @DbPrincipal est sysname, avec la valeur par défaut public. L’appelant de la fonction doit être membre du rôle de base de données fixe database_principal, dbo ou db_owner pour pouvoir appeler la fonction.

Valeurs des codes de retour

>= 0 (réussite) ou < 0 (échec).

Valeur Résultats
0 Le verrou a été libéré avec succès.
-999 Indique la validation de paramètre ou une autre erreur d'appel.

Notes

Lorsqu’une application appelle sp_getapplock plusieurs fois pour la même ressource de verrou, sp_releaseapplock elle doit être appelée le même nombre de fois pour libérer le verrou.

Lorsque le serveur s'interrompt pour une raison quelconque, les verrous sont libérés.

autorisations

Nécessite l'appartenance au rôle public .

Exemples

L'exemple suivant libère le verrou associé à la transaction active sur la ressource Form1 de la base de données AdventureWorks2022.

USE AdventureWorks2022;
GO

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

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