sp_releaseapplock (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Rilascia un blocco in una risorsa di applicazione.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

[ @Resource= ] 'resource_name'
Nome di una risorsa di blocco specificato nell'applicazione client. L'applicazione deve garantire che la risorsa sia univoca. Il nome specificato viene sottoposto internamente all'hashing in un valore che può essere archiviato nella gestione blocchi di SQL Server. resource_name è nvarchar(255) senza impostazione predefinita. resource_name viene confrontato in modo binario, pertanto fa distinzione tra maiuscole e minuscole indipendentemente dalle impostazioni delle regole di confronto del database corrente.

[ @LockOwner= ] 'lock_owner'
Proprietario del blocco, ovvero il valore di lock_owner al momento della richiesta del blocco. lock_owner è nvarchar(32). Il valore può essere Transaction (impostazione predefinita) o Session. Quando il valore lock_owner è Transaction, per impostazione predefinita o specificato in modo esplicito, sp_getapplock deve essere eseguito dall'interno di una transazione.

[ @DbPrincipal= ] 'database_principal'
Utente, ruolo o ruolo applicazione al quale sono state assegnate autorizzazioni per un oggetto di un database. Perché la chiamata della funzione abbia esito positivo, è necessario che il chiamante sia un membro del ruolo predefinito del database database_principal, dbo o db_owner. Il valore predefinito è public.

Valori del codice restituito

>= 0 (esito positivo) o < 0 (errore)

Valore Risultato
0 Il blocco è stato rilasciato correttamente.
-999 Indica un errore di convalida dei parametri o un altro errore di chiamata.

Osservazioni:

Se un'applicazione richiama sp_getapplock più volte per la stessa risorsa di blocco, per rilasciare il blocco è necessario richiamare sp_releaseapplock lo stesso numero di volte.

I blocchi vengono inoltre rilasciati quando per qualsiasi motivo il server viene arrestato.

Autorizzazioni

È richiesta l'appartenenza al ruolo public.

Esempi

Nell'esempio seguente viene rilasciato il blocco associato alla transazione corrente nella risorsa Form1 del database AdventureWorks2022.

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

Vedi anche

APPLOCK_MODE (Transact-SQL)
APPLOCK_TEST (Transact-SQL)
sp_getapplock (Transact-SQL)