Condividi tramite


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 relative alla sintassi Transact-SQL

Sintassi

sp_releaseapplock
    [ [ @Resource = ] N'Resource' ]
    [ , [ @LockOwner = ] 'LockOwner' ]
    [ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]

Argomenti

[ @Resource = ] N'Risorsa'

Nome di una risorsa di blocco specificato nell'applicazione client. @Resource è nvarchar(255), con un valore predefinito .NULL @Resource viene confrontato in modo binario, pertanto viene fatta distinzione tra maiuscole e minuscole indipendentemente dalle impostazioni delle regole di confronto del database corrente.

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.

[ @LockOwner = ] 'LockOwner'

Proprietario del blocco, ovvero il valore @LockOwner quando è stato richiesto il blocco. @LockOwner è varchar(32), con un valore predefinito .Transaction Il valore può anche essere Session. Quando il valore @LockOwner è Transaction, per impostazione predefinita o specificato in modo esplicito, sp_getapplock deve essere eseguito dall'interno di una transazione.

[ @DbPrincipal = ] N'DbPrincipal'

Ruolo utente, ruolo o applicazione con autorizzazioni per un oggetto in un database. @DbPrincipal è sysname, con un valore predefinito .public 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.

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:

Quando un'applicazione chiama sp_getapplock più volte per la stessa risorsa di blocco, sp_releaseapplock deve essere chiamato lo stesso numero di volte per rilasciare il blocco.

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