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