Delen via


sp_releaseapplock (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Geeft een lock op een applicatieresource los.

Transact-SQL syntaxis-conventies

Syntaxis

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

Arguments

[ @Resource = ] N'Resource'

Een naam van de lockresource die door de clientapplicatie wordt gespecificeerd. @Resource is nvarchar(255), met een standaard van NULL. @Resource is binair vergeleken en dus hoofdlettergevoelig ongeacht de rangeringsinstellingen van de huidige database.

De applicatie moet ervoor zorgen dat de bron uniek is. De opgegeven naam wordt intern gehasht in een waarde die kan worden opgeslagen in de SQL Server lock manager.

[ @LockOwner = ] 'LockOwner'

De eigenaar van het slot, wat de @LockOwner waarde is toen het slot werd aangevraagd. @LockOwner is varchar(32), met een standaard van Transaction. De waarde kan ook zijn Session. Wanneer de @LockOwner waarde Transactie is, moet deze standaard of expliciet sp_getapplock gespecificeerd worden uitgevoerd vanuit een transactie.

[ @DbPrincipal = ] N'DbPrincipal'

De gebruiker-, rol- of applicatierol die rechten heeft voor een object in een database. @DbPrincipal is sysname, met als standaard .public De aanroeper van de functie moet lid zijn van database_principal, dbo of de db_owner vaste databaserol om de functie succesvol aan te roepen.

Codewaarden retourneren

>= 0 (succes), of < 0 (mislukking).

Waarde Resultaat
0 Slot werd succesvol losgemaakt.
-999 Geeft parametervalidatie of andere oproepfout aan.

Opmerkingen

Wanneer een applicatie meerdere keren aanroept sp_getapplock voor dezelfde lockresource, sp_releaseapplock moet deze even vaak worden aangeroepen om de lock vrij te maken.

Wanneer de server om welke reden dan ook wordt uitgeschakeld, worden de vergrendelingen opgeheven.

Permissions

Vereist lidmaatschap van de openbare rol.

Voorbeelden

Het volgende voorbeeld opent de vergrendeling die gekoppeld is aan de huidige transactie op de resource Form1 in de AdventureWorks2025 database.

USE AdventureWorks2022;
GO

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

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