sp_releaseapplock (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Gibt eine Sperre für eine Anwendungsressource frei.
Transact-SQL-Syntaxkonventionen
Syntax
sp_releaseapplock
[ [ @Resource = ] N'Resource' ]
[ , [ @LockOwner = ] 'LockOwner' ]
[ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]
Argumente
[ @Resource = ] N'Ressource'
Der Name einer Sperrressource, der von der Clientanwendung angegeben wird. @Resource ist nvarchar(255), mit einem Standardwert von NULL
. @Resource binär verglichen wird, wird daher unabhängig von den Sortierungseinstellungen der aktuellen Datenbank die Groß-/Kleinschreibung beachtet.
In der Anwendung muss sichergestellt sein, dass die Ressource eindeutig ist. Der angegebene Name wird intern in einen Wert gehasht, der im SQL Server-Sperr-Manager gespeichert werden kann.
[ @LockOwner = ] 'LockOwner'
Der Besitzer der Sperre, bei dem es sich um den @LockOwner Wert handelt, als die Sperre angefordert wurde. @LockOwner ist varchar(32) mit einem Standardwert von Transaction
. Der Wert kann auch sein Session
. Wenn der @LockOwner Wert "Transaction" standardmäßig oder explizit angegeben ist, sp_getapplock
muss innerhalb einer Transaktion ausgeführt werden.
[ @DbPrincipal = ] N'DbPrincipal'
Die Benutzer-, Rollen- oder Anwendungsrolle, die über Berechtigungen für ein Objekt in einer Datenbank verfügt. @DbPrincipal ist "sysname" mit einem Standardwert von public
. Um eine Funktion erfolgreich aufzurufen, muss der Aufrufer der Funktion Mitglied einer der folgenden festen Datenbankrollen sein: database_principal, dbo oder db_owner.
Rückgabecodewerte
>= 0
(Erfolg) oder < 0
(Fehler).
Wert | Ergebnis |
---|---|
0 |
Die Sperre wurde erfolgreich aufgehoben. |
-999 |
Weist auf einen Fehler bei der Parameterüberprüfung oder einen anderen Aufruffehler hin. |
Hinweise
Wenn eine Anwendung mehrmals für dieselbe Sperrressource aufruft sp_getapplock
, muss dieselbe Anzahl von Male aufgerufen werden, sp_releaseapplock
um die Sperre freizugeben.
Wenn der Server aus irgendeinem Grund heruntergefahren wird, werden die Sperren freigegeben.
Berechtigungen
Erfordert die Mitgliedschaft in der public -Rolle.
Beispiele
Im folgenden Beispiel wird eine Sperre, die der aktuellen Transaktion zugeordnet ist, für die Ressource Form1
in der AdventureWorks2022
-Datenbank aufgehoben.
USE AdventureWorks2022;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo',
@Resource = 'Form1',
@LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo',
@Resource = 'Form1';
GO