Udostępnij za pomocą


sp_releaseapplock (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwalnia blokadę na zasobach aplikacji.

Transact-SQL konwencje składni

Składnia

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

Arguments

[ @Resource = ] N'Resource'

Nazwa zasobu blokady określona przez aplikację kliencką. @Resource to nvarchar(255), z domyślnym obciążeniem NULL. @Resource jest porównywana binarnie, więc jest wrażliwa na wielka literę niezależnie od ustawień kolizacji w aktualnej bazie danych.

Aplikacja musi zapewnić, że zasób jest unikalny. Określona nazwa jest wewnętrznie haszowana do wartości, którą można przechowywać w menedżerze blokad SQL Server.

[ @LockOwner = ] 'Właściciel zamka'

Właściciel zamka, czyli wartość @LockOwner w momencie zamówienia zamka. @LockOwner to varchar(32), z domyślnym .Transaction Wartość ta może również wynosić .Session Gdy wartość @LockOwner jest Transakcja, domyślnie lub wyraźnie określona, musi sp_getapplock być wykonana z wewnątrz transakcji.

[ @DbPrincipal = ] N'DbPrincipal'

Rola użytkownika, roli lub aplikacji, która ma uprawnienia do obiektu w bazie danych. @DbPrincipal to nazwa systemu, z domyślnym .public Wywołujący funkcję musi być członkiem database_principal, DBO lub stałej roli bazy danych db_owner , aby funkcja mogła być pomyślnie wywołana.

Zwracanie wartości kodu

>= 0 (sukces), lub < 0 (niepowodzenie).

Wartość Wynik
0 Lock został pomyślnie zwolniony.
-999 Wskazuje walidację parametrów lub inny błąd wywołania.

Uwagi

Gdy aplikacja wywołuje sp_getapplock wielokrotnie ten sam zasób blokady, musi być wywołana tyle samo razy, sp_releaseapplock aby zwolnić blokadę.

Gdy serwer wyłącza się z jakiegokolwiek powodu, blokady zostają zwolnione.

Permissions

Wymaga członkostwa w publicznej roli .

Przykłady

Poniższy przykład zwalnia blokadę powiązaną z bieżącą transakcją na zasobu Form1 w AdventureWorks2025 bazie danych.

USE AdventureWorks2022;
GO

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

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