Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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