Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo

APPLOCK_MODE (Transact-SQL)

Retorna o modo de bloqueio mantido pelo proprietário de bloqueio em um determinado recurso de aplicativo. APPLOCK_MODE é uma função de bloqueio de aplicativo e opera no banco de dados atual. O escopo de bloqueios de aplicativo é o banco de dados.

Ícone de vínculo de tópico Convenções de sintaxe Transact-SQL


APPLOCK_MODE( 'database_principal' , 'resource_name' , 'lock_owner' )

'database_principal'

É o usuário, a função ou a função de aplicativo que pode receber permissões para objetos no banco de dados. O chamador da função deve ser membro de database_principal, dbo ou a função de banco de dados fixa db_owner para chamar a função com êxito.

'resource_name'

É um nome de recurso de bloqueio especificado pelo aplicativo cliente. O aplicativo deve garantir que o nome do recurso seja exclusivo. O nome especificado é transformado internamente em um valor que pode ser armazenado no gerenciador de bloqueios do SQL Server. resource_nameé nvarchar(255), sem padrão. resource_name é binário comparado e, portanto, diferencia maiúsculas e minúsculas independentemente das configurações de agrupamento do banco de dados atual.

'lock_owner'

É o proprietário do bloqueio, que é o valor de lock_owner quando o bloqueio foi solicitado. lock_owner é nvarchar(32), e o valor pode ser Transaction (o padrão) ou Session.

nvarchar(32)

Retorna o modo de bloqueio mantido pelo proprietário de bloqueio em um determinado recurso de aplicativo. O modo de bloqueio pode ser qualquer um destes valores:

NoLock

Update

*SharedIntentExclusive

IntentShared

IntentExclusive

*UpdateIntentExclusive

Shared

Exclusive

 

*Este modo de bloqueio é uma combinação de outros modos de bloqueio e não é adquirido explicitamente usando sp_getapplock.

Nondeterministic

Nonindexable

Nonparallelizable

Dois usuários (Usuário A e Usuário B) com sessões separadas executam a seguinte sequência de instruções Transact-SQL.

Usuário A executa:

USE AdventureWorks2008R2;
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

Usuário B executa:

Use AdventureWorks2008R2;
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

Usuário A executa:

EXEC sp_releaseapplock @Resource='Form1', @DbPrincipal='public';
GO

Usuário B executa:

SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');
--Result set: '1' (The lock is grantable.)
GO

O Usuário A e o Usuário B executam:

COMMIT TRAN;
GO

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2015 Microsoft