sp_releaseapplock (Transact-SQL)

Gibt eine Sperre für eine Anwendungsressource frei.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_releaseapplock [ @Resource = ] 'resource_name' 
     [ , [ @LockOwner = ] 'lock_owner' ]
     [ , [ @DbPrincipal = ] 'database_principal' ]
[ ; ]

Argumente

  • [ @Resource = ] 'resource_name'
    Der Name einer Sperrenressource, der von der Clientanwendung angegeben wird. In der Anwendung muss sichergestellt sein, dass die Ressource eindeutig ist. Aus dem angegebenen Namen wird intern ein Hashwert erstellt, der im Sperren-Manager von SQL Server gespeichert werden kann. resource_name ist vom Datentyp nvarchar(255) und hat keinen Standardwert. resource_name unterliegt dem Binärvergleich. Daher muss die Groß-/Kleinschreibung unabhängig von den Sortierungseinstellungen der aktuellen Datenbank beachtet werden.

  • [ @LockOwner = ] 'lock_owner'
    Der Eigentümer der Sperre. Dabei handelt es sich um den Wert, der beim Anfordern der Sperre mit lock_owner angegeben wird. lock_owner ist ein Wert vom Datentyp nvarchar(32). Der Wert kann Transaction (Standard) oder Session sein. Wenn für lock_owner der Wert Transaction angegeben wird, und zwar unabhängig davon, ob dies der Standardwert ist oder ob er explizit angegeben wurde, muss sp_getapplock aus einer Transaktion heraus ausgeführt werden.

  • [ @DbPrincipal = ] 'database_principal'
    Ist der Benutzer, die Rolle oder die Anwendungsrolle, der bzw. die über Berechtigungen für ein Objekt in einer Datenbank verfügt. Zum erfolgreichen Aufrufen einer Funktion muss der Aufrufer der Funktion Mitglied einer der folgenden festen Datenbankrollen sein: database_principal, dbo oder db_owner. Der Standardwert ist public.

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 mehrere Male sp_getapplock für dieselbe Sperrenressource aufruft, muss sp_releaseapplock genauso oft aufgerufen werden, um die Sperre aufzuheben.

Wenn der Server aus irgendeinem Grund heruntergefahren wird, werden alle Sperren aufgehoben.

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 AdventureWorks-Datenbank aufgehoben.

USE AdventureWorks;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1', 
     @LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';
GO