sp_releaseapplock (T-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Melepaskan kunci pada sumber daya aplikasi.
Sintaks
sp_releaseapplock
[ [ @Resource = ] N'Resource' ]
[ , [ @LockOwner = ] 'LockOwner' ]
[ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]
Argumen
[ @Resource = ] N'Sumber daya'
Nama sumber daya kunci yang ditentukan oleh aplikasi klien. @Resource adalah nvarchar(255), dengan default NULL
. @Resource dibandingkan biner, dengan demikian peka huruf besar/kecil terlepas dari pengaturan kolater database saat ini.
Aplikasi harus memastikan bahwa sumber daya unik. Nama yang ditentukan di-hash secara internal ke dalam nilai yang dapat disimpan di manajer kunci SQL Server.
[ @LockOwner = ] 'LockOwner'
Pemilik kunci, yang merupakan nilai @LockOwner saat kunci diminta. @LockOwner adalah varchar(32), dengan default Transaction
. Nilainya juga bisa .Session
Ketika nilai @LockOwner adalah Transaksi, secara default atau ditentukan secara eksplisit, sp_getapplock
harus dijalankan dari dalam transaksi.
[ @DbPrincipal = ] N'DbPrincipal'
Peran pengguna, peran, atau aplikasi yang memiliki izin ke objek dalam database. @DbPrincipal adalah sysname, dengan default public
. Pemanggil fungsi harus menjadi anggota database_principal, dbo, atau peran database tetap db_owner agar fungsi berhasil dipanggil.
Mengembalikan nilai kode
>= 0
(berhasil), atau < 0
(kegagalan).
Nilai | Hasil |
---|---|
0 |
Kunci berhasil dirilis. |
-999 |
Menunjukkan validasi parameter atau kesalahan panggilan lainnya. |
Keterangan
Ketika aplikasi memanggil sp_getapplock
beberapa kali untuk sumber daya kunci yang sama, sp_releaseapplock
harus dipanggil frekuensi yang sama untuk melepaskan kunci.
Ketika server dimatikan karena alasan apa pun, kunci dilepaskan.
Izin
Memerlukan keanggotaan dalam peran publik .
Contoh
Contoh berikut merilis kunci yang terkait dengan transaksi saat ini pada sumber daya Form1
dalam AdventureWorks2022
database.
USE AdventureWorks2022;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo',
@Resource = 'Form1',
@LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo',
@Resource = 'Form1';
GO