Aracılığıyla paylaş


sp_releaseapplock (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Bir uygulama kaynağına kilitleme açar.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Arguments

[ @Resource = ] N'Resource'

İstemci uygulaması tarafından belirtilen bir kilit kaynak adı. @Resourcenvarchar(255)'dir, varsayılan olarak NULL. @Resource ikili karşılaştırmadır, bu nedenle mevcut veritabanının derleme ayarlarından bağımsız olarak büyük harf duyarlıdır.

Uygulama, kaynağın benzersiz olmasını sağlamalıdır. Belirtilen isim, SQL Server kilit yöneticisinde depolanabilecek bir değere dahili olarak hash edilir.

[ @LockOwner = ] 'Kilit Sahibi'

Kilidin sahibi, ki kilit istendiğinde @LockOwner değerdir. @LockOwnervarchar(32)'dir ve varsayılan olarak ' Transactiondir. Değer ayrıca olabilir Session. @LockOwner değeri Transaction ise, varsayılan olarak veya açıkça belirtilmişse, sp_getapplock işlem içinden yürütülmelidir.

[ @DbPrincipal = ] N'DbPrincipal'

Veritabanındaki bir nesneye yetkileri olan kullanıcı, rol veya uygulama rolü. @DbPrincipalsysname'dir ve varsayılan olarak .public Fonksiyonu çağıran kişi, fonksiyonu başarılı bir şekilde çağırabilmesi için database_principal, dbo veya db_owner sabit veritabanı rolünün bir üyesi olmalıdır.

Dönüş kodu değerleri

>= 0 (başarı), ya < 0 da (başarısızlık).

Değer Result
0 Lock başarıyla serbest bırakıldı.
-999 Parametre doğrulama veya başka çağrı hatasını gösterir.

Açıklamalar

Bir uygulama aynı kilit kaynağı için birden fazla kez çağrıldığında sp_getapplock , sp_releaseapplock kilidin serbest bırakılması için aynı sayıda kez çağrılmalıdır.

Sunucu herhangi bir nedenle kapandığında kilitler açılıyor.

Permissions

"" genel "" rolüne üyelik gerektirir.

Örnekler

Aşağıdaki örnek, veritabanındaki kaynaktaki Form1AdventureWorks2025 mevcut işlemle ilişkili kilidi serbest bırakır.

USE AdventureWorks2022;
GO

EXECUTE sp_getapplock
    @DbPrincipal = 'dbo',
    @Resource = 'Form1',
    @LockMode = 'Shared';

EXECUTE sp_releaseapplock
    @DbPrincipal = 'dbo',
    @Resource = 'Form1';
GO