Bagikan melalui


sp_releaseapplock (T-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Melepaskan kunci pada sumber daya aplikasi.

Konvensi sintaks transact-SQL

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