Condividi tramite


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 della risorsa di blocco specificata 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 (impostazione predefinita) oppure Session. Quando il valore di lock_owner è Transaction, per impostazione predefinita o perché specificato in modo esplicito, la stored procedure sp_getapplock deve essere eseguita dall'interno di 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 AdventureWorks.

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