Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Ez a függvény visszaadja a zár tulajdonosa által egy adott alkalmazásforráson lévő zárolási módot. Alkalmazászár funkcióként APPLOCK_MODE a jelenlegi adatbázison működik. Az adatbázis az alkalmazászárak hatókörű alakja.
Transact-SQL szintaxis konvenciók
Szemantika
APPLOCK_MODE( 'database_principal' , 'resource_name' , 'lock_owner' )
Arguments
'database_principal'
Az a felhasználó, szerep vagy alkalmazás szerep, amely jogosultságot kaphat az adatbázisban lévő objektumokhoz. A függvény sikeres meghívásához a függvényhívónak tagnak kell lennie a database_principal, dbo vagy a db_owner fix adatbázis szerepének.
'resource_name'
Egy kliensalkalmazás által meghatározott zároló erőforrás neve. Az alkalmazásnak egyedi erőforrás nevetet kell biztosítania. A megadott név belső hashelésben van egy olyan értékbe, amelyet az SQL Server zárkezelő bővülten tárolhat.
resource_namenvarchar(255), alapértelmezett nélkül.
resource_name bináris összehasonlítású, és kis-kisméretre érzékeny, függetlenül a jelenlegi adatbázis összeállítási beállításaitól.
'lock_owner'
A zsilit tulajdonosa, ami a lock_owner érték, amikor a zárat kérték.
lock_ownernvarchar(32), és az érték lehet Transaction (az alapértelmezett) vagy Session.
Visszatérési típusok
nvarchar(32)
Visszaadott érték
Visszaadja a zár tulajdonos által egy adott alkalmazásforráson tartott zárolási módot. A zárolási mód bármelyik alábbi értéket megkaphatja:
NoLock
Update
*Megosztott szándékKizárólagos
IntentShared
IntentExclusive
*UpdateIntentExclusive
megosztott
Exkluzív
*Ez a zárolási mód más zárolási módok kombinációja, és sp_getapplock nem lehet kifejezetten megszerezni.
Függvénytulajdonságok
Nem determinisztikus
Nem indexelhető
Nem párhuzamos
Példák
Két felhasználó (A és B felhasználó), külön ülésekkel, a következő Transact-SQL utasítássorozatot futtatják.
Az A felhasználó így fut:
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
Ezután a B felhasználó futtatja:
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
Ezután az A felhasználó a következőket futtatja:
EXEC sp_releaseapplock @Resource='Form1', @DbPrincipal='public';
GO
Ezután a B felhasználó futtatja:
SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');
--Result set: '1' (The lock is grantable.)
GO
Ezután A és B felhasználó a következőket futtatják:
COMMIT TRAN;
GO
Lásd még
APPLOCK_TEST (Transact-SQL)
sp_getapplock (Transact-SQL)
sp_releaseapplock (Transact-SQL)