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)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по