sp_releaseapplock (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе 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Транзакция, по умолчанию или указано явно, sp_getapplock необходимо выполнить из транзакции.

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

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

>= 0 (успешно) или < 0 (сбой)

Значение Результат
0 Блокировка успешно снята.
-999 Сигнализирует об ошибке проверки параметра или о другой ошибке вызова процедуры.

Замечания

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

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

Разрешения

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

Примеры

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

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

См. также

APPLOCK_MODE (Transact-SQL)
APPLOCK_TEST (Transact-SQL)
sp_getapplock (Transact-SQL)