Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Эта функция возвращает режим блокировки, полученный владельцем блокировки на конкретный ресурс приложения. Функция блокировки приложения APPLOCK_MODE действует в текущей базе данных. База данных является областью блокировок приложений.
Соглашения о синтаксисе Transact-SQL
Синтаксис
APPLOCK_MODE( 'database_principal' , 'resource_name' , 'lock_owner' )
Аргументы
'database_principal'
Пользователь, роль или роль приложения, которым могут быть предоставлены разрешения на доступ к объектам базы данных. Для успешного вызова функции вызывающий ее объект должен быть членом предопределенной роли базы данных database_principal, dbo или db_owner.
'resource_name'
Имя ресурса блокировки, указанное клиентским приложением. Приложение должно гарантировать уникальность имени ресурса. Указанное имя хэшируется внутри значения, которое диспетчер блокировки SQL Server может хранить внутри. Аргумент resource_name имеет тип nvarchar(255) и не имеет значения по умолчанию. Аргумент resource_name сравнивается в двоичном режиме с учетом регистра символов независимо от параметров сортировки текущей базы данных.
'lock_owner'
Владелец блокировки, которая имеет значение lock_owner на момент запроса блокировки. Аргумент lock_owner имеет тип nvarchar(32) и может иметь значение Transaction (по умолчанию) или Session.
Типы возвращаемых данных
nvarchar(32)
Возвращаемое значение
Возвращает режим блокировки, полученный владельцем блокировки на конкретный ресурс приложения. Режим блокировки может принимать следующие значения:
NoLock
Update
*SharedIntentExclusive
IntentShared
IntentExclusive
*UpdateIntentExclusive
Shared
Монопольно
* Этот режим блокировки представляет собой сочетание других режимов и не может быть явным образом получен процедурой sp_getapplock.
Свойства функции
Nondeterministic
Nonindexable
Nonparallelizable
Примеры
Два пользователя (А и Б) с отдельными сеансами запускают приведенную ниже последовательность инструкций Transact-SQL.
Пользователь А запускает:
USE AdventureWorks2022;
GO
BEGIN TRAN;
DECLARE @result INT;
EXEC @result=sp_getapplock
@DbPrincipal='public',
@Resource='Form1',
@LockMode='Shared',
@LockOwner='Transaction';
SELECT APPLOCK_MODE('public', 'Form1', 'Transaction');
GO
Затем пользователь Б запускает:
Use AdventureWorks2022;
GO
BEGIN TRAN;
SELECT APPLOCK_MODE('public', 'Form1', 'Transaction');
--Result set: NoLock
SELECT APPLOCK_TEST('public', 'Form1', 'Shared', 'Transaction');
--Result set: 1 (Lock is grantable.)
SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');
--Result set: 0 (Lock is not grantable.)
GO
Затем пользователь А запускает:
EXEC sp_releaseapplock @Resource='Form1', @DbPrincipal='public';
GO
Затем пользователь Б запускает:
SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');
--Result set: '1' (The lock is grantable.)
GO
Затем оба пользователя (А и Б) запускают:
COMMIT TRAN;
GO
См. также
APPLOCK_TEST (Transact-SQL)
sp_getapplock (Transact-SQL)
sp_releaseapplock (Transact-SQL)