sp_releaseapplock (Transact-SQL)

 

Gibt eine Sperre für eine Anwendungsressource frei.

Gilt für: SQL Server (SQL Server 2008 bis zur aktuellen Version), Azure SQL-Datenbank.

Topic link icon Transact-SQL-Syntaxkonventionen

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

[ @Resource= ] "Resource_name"
Der Name einer Sperrressource, der von der Clientanwendung angegeben wird. In der Anwendung muss sichergestellt sein, dass die Ressource eindeutig ist. Der angegebene Name wird intern als Hashwert in einem Wert gespeichert, der im SQL Server-Sperren-Manager gespeichert werden kann. Resource_name ist nvarchar(255) hat keinen Standardwert. Resource_name ist Binärvergleich, daher wird Groß-/Kleinschreibung beachtet, unabhängig von den sortierungseinstellungen der aktuellen Datenbank.

[ @LockOwner= ] "Lock_owner"
Der Besitzer der Sperre, also die Lock_owner Wert, der beim Anfordern der Sperre. Lock_owner ist nvarchar(32). Der Wert kann Transaktion (Standard) oder Sitzung. Wenn die Lock_owner Wert Transaktion, von Standard oder explizit angegeben wurde, Sp_getapplock muss aus ausgeführt werden innerhalb einer Transaktions.

[ @DbPrincipal= ] "Database_principal"
Der Benutzer, die Rolle oder die Anwendungsrolle mit Berechtigungen für ein Objekt in einer Datenbank. Der Aufrufer der Funktion muss ein Mitglied sein Database_principal, Dbo oder Db_owner festen Datenbankrolle um die Funktion erfolgreich aufzurufen. Der Standardwert ist public.

>= 0 (Erfolg) oder < 0 (Fehler)

WertErgebnis
0Die Sperre wurde erfolgreich aufgehoben.
-999Weist auf einen Fehler bei der Parameterüberprüfung oder einen anderen Aufruffehler hin.

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 die Sperren aufgehoben.

Erfordert die Mitgliedschaft in der public-Rolle.

Im folgenden Beispiel wird eine Sperre, die der aktuellen Transaktion zugeordnet ist, für die Ressource Form1 in der AdventureWorks2012-Datenbank aufgehoben.

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

APPLOCK_MODE ( Transact-SQL )
APPLOCK_TEST ( Transact-SQL )
Sp_getapplock ( Transact-SQL )

Community-Beiträge

HINZUFÜGEN
Anzeigen: