sp_releaseapplock (Transact-SQL)
Rilascia un blocco in una risorsa di applicazione.
Convenzioni della sintassi Transact-SQL
sp_releaseapplock [ @Resource = ] 'resource_name'
[ , [ @LockOwner = ] 'lock_owner' ]
[ , [ @DbPrincipal = ] 'database_principal' ]
[ ; ]
[ @Resource= ] 'resource_name'
Nome di una risorsa di blocco specificato dall'applicazione client. L'applicazione deve garantire che la risorsa sia univoca. Il nome specificato viene sottoposto internamente ad hashing per creare un valore che è possibile archiviare in Gestione blocchi di SQL Server. resource_name è di tipo nvarchar(255) e non prevede alcun valore predefinito. resource_name viene confrontato a livello binario e pertanto supporta la 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 quando è stato richiesto il blocco. lock_owner è di tipo nvarchar(32). Il valore può essere Transaction (predefinito) o Session. Quando il valore di lock_owner è Transaction, per impostazione predefinita o specificato in modo esplicito, sp_getapplock deve essere eseguito in una transazione.[ @DbPrincipal= ] 'database_principal'
Utente, ruolo o ruolo applicazione al quale sono state assegnate autorizzazioni per un oggetto di un database. Affinché 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.
>= 0 (esito positivo) o < 0 (esito negativo)
Valore |
Risultato |
---|---|
0 |
Il blocco è stato rilasciato correttamente. |
-999 |
Indica un errore di convalida dei parametri o un altro errore di chiamata. |
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.
È richiesta l'appartenenza al ruolo public.
Nell'esempio seguente viene rilasciato il blocco associato alla transazione corrente nella risorsa Form1 del database AdventureWorks2012.
USE AdventureWorks2012;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1',
@LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';
GO