Freigeben über


Sperrhinweise (SQL Server Compact Edition)

Sie können eine Reihe von Sperrhinweisen auf Tabellenebene mithilfe der Anweisungen SELECT, INSERT, UPDATE und DELETE angeben, um das Standardsperrverhalten von Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) zu ändern. Sperrhinweise sollten nur verwendet werden, wenn dies unbedingt erforderlich ist. Sie können sich negativ auf die Parallelität auswirken.

Wichtig:
SQL Server Compact Edition fordert die für einen Vorgang benötigten Sperren automatisch an. Wenn Sie die in der folgenden Tabelle aufgeführten Sperrhinweise verwenden, erhöht SQL Server Compact Edition die Anzahl der vorkommenden Sperrungen. Sperrhinweise können nicht verwendet werden, um die Sperrung von Ressourcen zu verhindern.

In der folgenden Tabelle werden die Sperrhinweise beschrieben, die Sie in SQL Server Compact Edition verwenden können.

Name des Sperrhinweises Beschreibung des Sperrhinweises

GRANULARITY

ROWLOCK

Verwenden Sie Sperrhinweise auf Zeilenebene beim Lesen oder Ändern von Daten. Diese werden bei Bedarf angefordert und aufgehoben.

SELECT-Vorgänge richten Sperren vom Typ S für Zeilen ein.

PAGLOCK

Verwenden Sie Sperrhinweise auf Seitenebene beim Lesen oder Ändern von Daten. Diese werden bei Bedarf angefordert und aufgehoben.

SELECT-Vorgänge richten Sperren vom Typ S für Seiten ein.

TABLOCK

Verwenden Sie eine Tabellensperre beim Lesen oder Ändern von Daten. Diese Sperre wird bis zum Ende der Anweisung aufrechterhalten.

SELECT-Vorgänge richten Sperren vom Typ S für Tabellen ein.

DBLOCK

Verwenden Sie eine Datenbanksperre beim Lesen oder Ändern von Daten. Diese Sperre wird bis zum Ende der Anweisung aufrechterhalten.

SELECT-Vorgänge richten Sperren vom Typ S für Datenbanken ein.

LOCKMODES

UPDLOCK

Verwenden Sie Aktualisierungssperren anstelle gemeinsamer Sperren beim Lesen einer Tabelle, und verwenden Sie HOLDLOCK bis zum Ende der Anweisung oder der Transaktion. Mit UPDLOCK können Sie Daten lesen ohne andere Benutzer zu blockieren und später mit der Gewissheit aktualisieren, dass die Daten seit dem letzten Lesevorgang nicht geändert wurden.

SELECT-Vorgänge richten Sperren vom Typ U ein. Die Standardgranularität ist ROWLOCK.

XLOCK

Verwenden Sie exklusive Sperren anstelle gemeinsamer Sperren beim Lesen einer Tabelle, und verwenden Sie HOLDLOCK bis zum Ende der Anweisung oder der Transaktion.

SELECT-Vorgänge richten Sperren vom Typ X ein. Die Standardgranularität ist ROWLOCK.

DURATION

HOLDLOCK

Verwenden Sie HOLDLOCK, um eine Sperre bis zum Ende der Transaktion aufrechtzuerhalten, anstatt sie aufzuheben, sobald die erforderliche Tabelle, Zeile oder Datenseite nicht mehr benötigt wird.

Wird keine Granularität angegeben, wird ROWLOCK angewendet.

NOLOCK

Es werden keine Sperren ausgegeben. Dies ist die Standardeinstellung für SELECT-Vorgänge. Dieser Typ wird nicht auf die AnweisungenINSERT, UPDATE- und DELETE angewendet.

Hinweis:
In SQL Server ermöglicht ein NOLOCK-Hinweis das Verhalten READ UNCOMMITTED. In SQL Server Compact Edition ist beim Verwenden eines NOLOCK-Sperrhinweises immerhin noch die Isolationsstufe READ COMMITTED möglich. SQL Server Compact Edition verwaltet Kopien der Daten, um sicherzustellen, dass Daten ohne gemeinsame Sperren zum Schutz der Daten gelesen werden können.

Weitere Informationen zum Verwenden von Sperrhinweisen finden Sie unter "Sperrhinweise" in der SQL Server-Onlinedokumentation.

NOLOCK-Sperrhinweis

Das Verwenden von Sperrhinweisen in SQL Server Compact Edition ist mit dem in SQL Server vergleichbar. Bei SQL Server Compact Edition weist der NOLOCK-Hinweis jedoch ein ganz anderes Verhalten auf als bei SQL Server. In SQL Server Compact Edition entspricht der NOLOCK-Hinweis der Standardeinstellung von SELECT-Anweisungen, wodurch jedoch weiterhin das READ COMMITTED-Verhalten erzwungen wird.

In SQL Server werden bei einer SELECT-Anweisung mit der Standardisolationsstufe READ COMMITTED Sperren vom Typ S in Zeilen eingerichtet und aufgehoben, wenn sie gelesen werden. Die Isolationsstufe wird dadurch erzwungen. Trotzdem wird von einer SELECT-Anweisung bei dem Vorhandensein einer inkompatiblen Sperre in einer Zeile gewartet, für die eine Sperre vom Typ S benötigt wird. Wird der NOLOCK-Hinweis angegeben, wird vom SELECT-Vorgang keine Sperre vom Typ S eingerichtet, und die Daten werden gelesen. Der Vorgang wird also erfolgreich ausgeführt. Allerdings können jetzt Daten ohne Commit von der SELECT-Anweisung gelesen werden.

SQL Server Compact Edition verwendet keine Sperren vom Typ S, um sicherzustellen, dass der Commit der Daten vor dem Lesevorgang ausgeführt wird (READ COMMITTED). Da von SQL Server Compact Edition ein Mechanismus zur Seitenversionsverwaltung beim Ändern von Daten verwendet wird, können die von einer SELECT-Anweisung benötigten Daten von der entsprechenden Kopie der Seiten gelesen werden. Es sind keine Sperren vom Typ S erforderlich, um die Isolationsstufe READ COMMITTED sicherzustellen. Deshalb werden die Daten auf der Isolationsstufe READ COMMITTED gelesen, obwohl von SQL Server Compact Edition NOLOCK für SELECT-Anweisungen verwendet wird. Dirty Reads (READ UNCOMMITTED) sind in SQL Server Compact Edition nicht möglich.

Hinweis:
Der NOLOCK-Hinweis wirkt sich nicht auf Sperren vom Typ Sch-S oder Sch-X aus.

Siehe auch

Konzepte

Grundlegendes zu Sperren
Isolationsstufen von Transaktionen
Anzeigen von Sperrinformationen
Sperrtimeout

Hilfe und Information

Informationsquellen für SQL Server Compact Edition