War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern
Erweitern Minimieren

APPLOCK_MODE (Transact-SQL)

Gibt den Sperrmodus zurück, der vom Besitzer der Sperre für eine bestimmte Anwendungsressource aufrechterhalten wird. APPLOCK_MODE ist eine Anwendungssperrfunktion, die für die aktuelle Datenbank gilt. Die Datenbank ist der Bereich der Anwendungssperren.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen


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

' database_principal '

Der Benutzer, die Rolle oder die Anwendungsrolle, dem bzw. der Berechtigungen für Objekte in einer Datenbank erteilt werden können. Um eine Funktion erfolgreich aufzurufen, muss der Aufrufer der Funktion Mitglied einer der folgenden festen Datenbankrollen sein: database_principal, dbo oder db_owner.

' resource_name '

Der Name einer Sperrenressource, der von der Clientanwendung angegeben wird. Die Anwendung muss sicherstellen, dass der Ressourcenname eindeutig ist. Der angegebene Name wird intern in einen Wert hashcodiert, der im Sperren-Manager von MicrosoftSQL Server gespeichert werden kann. resource_name ist vom Datentyp nvarchar(255) und hat keinen Standardwert. resource_name unterliegt dem Binärvergleich. Daher muss die Groß-/Kleinschreibung unabhängig von den Sortierungseinstellungen der aktuellen Datenbank beachtet werden.

' lock_owner '

Der Eigentümer der Sperre. Dabei handelt es sich um den Wert, der beim Anfordern der Sperre mit lock_owner angegeben wird. lock_owner ist vom Datentyp nvarchar(32), und der Wert kann entweder Transaction (Standard) oder Session lauten.

nvarchar(32)

Gibt den Sperrmodus zurück, der vom Besitzer der Sperre für eine bestimmte Anwendungsressource aufrechterhalten wird. Für den Sperrmodus sind die folgenden Werte möglich:

NoLock

Update

*SharedIntentExclusive

IntentShared

IntentExclusive

*UpdateIntentExclusive

Shared

Exclusive

 

*Dieser Sperrmodus ist eine Kombination aus anderen Sperrmodi und kann nicht mithilfe von sp_getapplock explizit aktiviert werden.

Nicht deterministisch

Nicht indizierbar

Nicht parallelisierbar

Zwei Benutzer (Benutzer A und Benutzer B) führen in getrennten Sitzungen die folgende Sequenz von Transact-SQL-Anweisungen aus.

Benutzer A führt Folgendes aus:

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

Benutzer B führt dann Folgendes aus:

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

Benutzer A führt dann Folgendes aus:

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

Benutzer B führt dann Folgendes aus:

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

Benutzer A und Benutzer B führen dann Folgendes aus:

COMMIT TRAN;
GO

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft