sp_releaseapplock (Transact-SQL)

Снимает блокировку ресурса приложения.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_releaseapplock [ @Resource = ] 'resource_name' 
     [ , [ @LockOwner = ] 'lock_owner' ]
     [ , [ @DbPrincipal = ] 'database_principal' ]
[ ; ]

Аргументы

  • [ @Resource = ] 'resource_name'
    Имя ресурса блокировки, указанное клиентским приложением. Приложение должно убедиться в уникальности ресурса. Указанное имя внутренним образом хэшируется в значение, которое может храниться в диспетчере блокировок SQL Server. Аргумент resource_name имеет тип nvarchar(255) и не имеет значения по умолчанию. Значение аргумента resource_name сравнивается по битам с учетом регистра независимо от настроек параметров сортировки текущей базы данных.

  • [ @LockOwner = ] 'lock_owner'
    Владелец данной блокировки, представленный значением аргумента lock_owner при запросе блокировки. Аргумент lock_owner имеет тип nvarchar(32). Значением может быть Transaction (по умолчанию) или Session. Если аргумент lock_owner имеет значение Transaction, установленное по умолчанию или определенное явно, процедура sp_getapplock должна выполняться в рамках транзакции.

  • [ @DbPrincipal = ] 'database_principal'
    Пользователь, роль или роль приложения, которые имеют разрешения на объект базы данных. Чтобы успешно выполнить вызов этой функции, необходимо быть членом предопределенной роли базы данных database_principal, dbo или db_owner. Значение по умолчанию: public.

Значения кода возврата

>= 0 (успешное завершение) или < 0 (неуспешное завершение)

Значение

Результат

0

Блокировка успешно снята.

-999

Сигнализирует об ошибке проверки параметра или о другой ошибке вызова процедуры.

Замечания

Если приложение вызывает процедуру sp_getapplock несколько раз для одного и того же ресурса блокировки, то процедура sp_releaseapplock должна вызываться такое же количество раз для снятия блокировки.

При отключении сервера вне зависимости от причины отключения освобождаются все блокировки.

Разрешения

Требуется членство в роли public.

Примеры

В следующем примере освобождается блокировка ресурса Form1, связанная с текущей транзакцией в базе данных AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1', 
     @LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';
GO