Freigeben über


Transaktionsisolationsstufen von Cursorn

Das Transaktionssperrverhalten eines bestimmten Cursors wird durch Kombinieren des Sperrverhaltens der Parallelitätseinstellung eines Cursors, der Sperrhinweise, die in der SELECT-Anweisung des Cursors angegeben sind, sowie der Optionen für die Transaktionsisolationsstufen bestimmt.

MicrosoftSQL Server unterstützt die folgenden Transaktionsisolationsstufen für Cursor:

  • Read Committed
    SQL Server richtet beim Lesen einer Zeile in einen Cursor eine freigegebene Sperre ein, gibt die Sperre jedoch unmittelbar nach dem Lesen der Zeile wieder frei. Da Anforderungen einer freigegebenen Sperre durch eine exklusive Sperre blockiert werden, wird verhindert, dass ein Cursor eine Zeile liest, die ein anderer Task aktualisiert hat, für die jedoch noch kein Commit ausgeführt wurde. Diese Isolationsstufe ist die Standardisolationsstufe für SQL Server und ODBC.

  • Read Uncommitted
    SQL Server fordert keine Sperren beim Lesen einer Zeile in einen Cursor an und erkennt exklusive Sperren nicht an. Cursor können mit bereits aktualisierten Werten, für die jedoch noch kein Commit ausgeführt wurde, aufgefüllt werden. Der Benutzer umgeht alle Steuerungsmechanismen für das Sperren von Transaktionen in SQL Server.

  • Repeatable Read oder Serializable
    SQL Server fordert eine freigegebene Sperre für jede Zeile beim Lesen in den Cursor wie in READ COMMITTED an. Wenn der Cursor jedoch innerhalb einer Transaktion geöffnet wurde, werden die freigegebenen Sperren bis zum Ende der Transaktion aufrechterhalten, statt nach dem Lesen der Zeile freigegeben zu werden. Dies hat dieselben Auswirkungen wie das Angeben von HOLDLOCK für eine SELECT-Anweisung.

  • Snapshot
    SQL Server fordert keine Sperren beim Lesen einer Zeile in einen Cursor an und erkennt exklusive Sperren nicht an. Der Cursor wird mit den Werten aufgefüllt, die zum Zeitpunkt des ersten Starts der Transaktion vorlagen. Scrollsperren werden unabhängig von der Verwendung der Snapshotisolation weiterhin angefordert.