sp_releaseapplock (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Släpper låset på en applikationsresurs.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

[ @Resource = ] N'Resource'

Ett låsresursnamn som specificeras av klientapplikationen. @Resource är nvarchar(255), med en standard på NULL. @Resource är binärjämförelse, alltså kasuskänslig oavsett sorteringsinställningarna i den aktuella databasen.

Applikationen måste säkerställa att resursen är unik. Det angivna namnet hashas internt till ett värde som kan lagras i SQL Server-låshanteraren.

[ @LockOwner = ] 'Låsägare'

Ägaren till låset, vilket är det @LockOwner värdet när låset begärdes. @LockOwner är varchar(32), med standardvärdet .Transaction Värdet kan också vara Session. När @LockOwner värde är Transaktion, som standard eller explicit specificerat, sp_getapplock måste det utföras inifrån en transaktion.

[ @DbPrincipal = ] N'DbPrincipal'

Användaren, rollen eller applikationsrollen som har behörigheter till ett objekt i en databas. @DbPrincipal är sysname, med standardvärdet .public Anroparen av funktionen måste vara medlem i database_principal, dbo eller den db_owner fasta databasrollen för att funktionen ska kunna anropas framgångsrikt.

Returnera kodvärden

>= 0 (framgång), eller < 0 (misslyckande).

Värde Result
0 Lock frigavs framgångsrikt.
-999 Indikerar parametervalidering eller annat anropsfel.

Anmärkningar

När en applikation anropar sp_getapplock flera gånger för samma låsresurs sp_releaseapplock måste anropas lika många gånger för att släppa låset.

När servern stängs ner av någon anledning släpps låsen.

Permissions

Kräver medlemskap i offentlig roll.

Examples

Följande exempel frigör låset som är kopplat till den aktuella transaktionen på resursen Form1 i databasen AdventureWorks2025 .

USE AdventureWorks2022;
GO

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

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