Sdílet prostřednictvím


sp_releaseapplock (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Uvolní zámek na aplikační zdroj.

Transact-SQL konvence syntaxe

Syntaxe

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

Arguments

[ @Resource = ] N'Resource'

Název zámkového zdroje určený klientskou aplikací. @Resource je nvarchar(255), s výchozím hodnotou NULL. @Resource je binárně porovnávána, tedy citlivá na velká písmena bez ohledu na nastavení třídění v aktuální databázi.

Aplikace musí zajistit, že zdroj je jedinečný. Specifikovaný název je interně zahashován do hodnoty, kterou lze uložit do správce zámků SQL Serveru.

[ @LockOwner = ] 'LockOwner'

Majitel zámku, což je @LockOwner hodnota při žádosti o zámek. @LockOwner je varchar(32), s výchozím hodnotou Transaction. Hodnota může být Sessiontaké . Když je hodnota @LockOwnerTransakci, ať už ve výchozím nastavení nebo výslovně stanovena, sp_getapplock musí být provedena přímo v transakci.

[ @DbPrincipal = ] N'DbPrincipal'

Uživatel, role nebo aplikační role, která má oprávnění k objektu v databázi. @DbPrincipal je sysname, s výchozím nastavením public. Volající funkce musí být členem database_principal, dbo nebo db_owner pevné databázové role, aby bylo možné funkci úspěšně volat.

Hodnoty návratového kódu

>= 0 (úspěch), nebo < 0 (neúspěch).

Hodnota Result
0 Lock byl úspěšně propuštěn.
-999 Označuje validaci parametrů nebo jinou chybu volání.

Poznámky

Když aplikace volá sp_getapplock více pro stejný zdroj zámku, musí být volán stejný početkrát, sp_releaseapplock aby zámek uvolnil.

Když se server z jakéhokoliv důvodu vypne, zámky se uvolní.

Povolení

Vyžaduje členství ve veřejné roli .

Examples

Následující příklad uvolňuje zámek spojený s aktuální transakcí na zdroji Form1AdventureWorks2025 v databázi.

USE AdventureWorks2022;
GO

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

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