Freigeben über


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