Leggere in inglese

Condividi tramite


sp_releaseapplock (Transact-SQL)

Rilascia un blocco in una risorsa di applicazione.

Icona di collegamento a un argomento Convenzioni 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 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.

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

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

Vedere anche

Riferimento

APPLOCK_MODE (Transact-SQL)

APPLOCK_TEST (Transact-SQL)

sp_getapplock (Transact-SQL)