sys.sp_releaseapplock (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

Gibt eine Sperre für eine Anwendungsressource frei.

Transact-SQL-Syntaxkonventionen

Syntax

sys.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 AdventureWorks2025-Datenbank aufgehoben.

Hinweis

In Azure SQL-Datenbank und SQL Database in Microsoft Fabric ist die Anweisung USE nicht verfügbar. Stattdessen verbinden Sie sich direkt mit der vorgesehenen Datenbank und führen Sie den Rest des Codebeispiels aus.

USE AdventureWorks2022;
GO

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

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