sp_releaseapplock (Transact-SQL)

Rilascia un blocco in una risorsa di applicazione.

Icona di collegamento a un argomentoConvenzioni della 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. Per il nome specificato viene eseguito internamente l'hashing in un valore che può essere archiviato 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 che dispone delle autorizzazioni per un oggetto in 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.

Valori restituiti

>= 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.

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 AdventureWorks2008R2.

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