Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Esta função devolve informação sobre se um bloqueio pode ou não ser concedido a um determinado recurso de aplicação, para um proprietário especificado do bloqueio, sem a aquisição do bloqueio. Como função de bloqueio de aplicação, APPLOCK_TEST opera na base de dados atual. A base de dados é o âmbito dos bloqueios de aplicação.
Transact-SQL convenções de sintaxe
Sintaxe
APPLOCK_TEST ( 'database_principal' , 'resource_name' , 'lock_mode' , 'lock_owner' )
Arguments
'database_principal'
O utilizador, papel ou função de aplicação que pode receber permissões para objetos na base de dados. Para chamar com sucesso a função, o chamador de função deve ser membro de database_principal, DBO ou do papel de base de dados fixo db_owner.
'resource_name'
Um nome de recurso de bloqueio especificado pela aplicação cliente. A aplicação deve garantir um nome de recurso único. O nome especificado é inserido internamente num valor que o gestor de bloqueios do SQL Server pode armazenar internamente.
resource_nameé nvarchar(255), sem padrão.
resource_name é binária comparada e é sensível a maiúsculas minúsculas independentemente das definições de colação da base de dados atual.
'lock_mode'
O modo de bloqueio para obter para um recurso específico.
lock_mode é nvarchar(32), sem valor padrão.
lock_mode pode ter qualquer um destes valores: Partilhado, Atualização, IntençãoPartilhada, IntençãoExclusiva, Exclusiva.
'lock_owner'
O proprietário da fechadura, que é o valor lock_owner quando a fechadura foi solicitada.
lock_owner é nvarchar(32), e o valor pode ser Transação (o padrão) ou Sessão. Se o Default ou a Transação for explicitamente especificado, APPLOCK_TEST deve ser executada dentro de uma transação.
Tipos de devolução
smallint
Valor de retorno
0 se a fechadura não puder ser concedida ao proprietário especificado, ou 1 se a fechadura puder ser concedida.
Propriedades da função
Não determinístico
Não indexável
Não paralelizável
Examples
Dois utilizadores (Utilizador A e Utilizador B), com sessões separadas, executam a seguinte sequência de instruções Transact-SQL.
O Utilizador A executa:
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
O Utilizador B executa então:
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
O Utilizador A então executa:
EXEC sp_releaseapplock @Resource='Form1', @DbPrincipal='public';
GO
O Utilizador B executa então:
SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');
--Result set: '1' (The lock is grantable.)
GO
O Utilizador A e o Utilizador B executam ambos:
COMMIT TRAN;
GO
Consulte também
APPLOCK_MODE (Transact-SQL)
sp_getapplock (Transact-SQL)
sp_releaseapplock (Transact-SQL)