Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Deze functie geeft informatie terug over de vraag of een slot kan worden toegekend op een bepaalde applicatiebron, voor een gespecificeerde lock-eigenaar, zonder het slot te verkrijgen. Als applicatievergrendelingsfunctie werkt APPLOCK_TEST op de huidige database. De database is het bereik van de applicatievergrendelingen.
Transact-SQL syntaxis-conventies
Syntaxis
APPLOCK_TEST ( 'database_principal' , 'resource_name' , 'lock_mode' , 'lock_owner' )
Arguments
'database_principal'
De gebruiker-, rol- of applicatierol die rechten kan krijgen voor objecten in de database. Om de functie succesvol aan te roepen, moet de functieaanroeper lid zijn van database_principal, dbo of de db_owner vaste databaserol.
'resource_name'
Een naam van de lockresource die door de clientapplicatie wordt gespecificeerd. De applicatie moet zorgen voor een unieke naam van de bron. De opgegeven naam wordt intern gehasht naar een waarde die de SQL Server lock manager intern kan opslaan.
resource_nameis nvarchar(255), zonder standaard.
resource_name is binair vergeleken en is hoofdlettergevoelig ongeacht de collatie-instellingen van de huidige database.
'lock_mode'
De lock-modus om een specifieke bron te verkrijgen.
lock_mode is nvarchar(32), zonder standaardwaarde.
lock_mode kunt een van deze waarden hebben: Gedeeld,Update, IntentGedeeld, IntentExclusive, Exclusive.
'lock_owner'
De eigenaar van het slot, wat de lock_owner waarde was toen het slot werd aangevraagd.
lock_owner is nvarchar(32), en de waarde kan zowel Transactie (de standaard) als Sessie zijn. Als default of Transaction expliciet is gespecificeerd, moet APPLOCK_TEST vanuit een transactie worden uitgevoerd.
Retourtypen
smallint
Retourwaarde
0 als het slot niet aan de opgegeven eigenaar kan worden toegekend, of 1 als het slot kan worden toegekend.
Functie-eigenschappen
Niet-deterministisch
Niet-indexeerbaar
Niet-paralleliseerbaar
Voorbeelden
Twee gebruikers (gebruiker A en gebruiker B), met aparte sessies, voeren de volgende reeks van Transact-SQL instructies uit.
Gebruiker A voert:
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
Gebruiker B voert vervolgens uit:
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
Gebruiker A voert vervolgens uit:
EXEC sp_releaseapplock @Resource='Form1', @DbPrincipal='public';
GO
Gebruiker B voert vervolgens uit:
SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');
--Result set: '1' (The lock is grantable.)
GO
Gebruiker A en Gebruiker B voeren dan allebei uit:
COMMIT TRAN;
GO
Zie ook
APPLOCK_MODE (Transact-SQL)
sp_getapplock (Transact-SQL)
sp_releaseapplock (Transact-SQL)