Zur Wahrung der Datenintegrität stehen Transaktions- und Sperrmechanismen zur Verfügung. Eine Transaktion ist eine logische Einheit von einer oder mehreren SQL-Anweisungen. Werden alle SQL- Anweisungen innerhalb einer Transaktion fehlerfrei verarbeitet, kann die Transaktion in der Datenbank festgeschrieben (COMMIT) werden. Schlägt eine Datenbankoperation innerhalb einer Transaktion fehl, kann die gesamte Transaktion rückgängig gemacht werden (ROLLBACK). Zusätzlich kann über die Definition von Savepoints ein teilweises Zurücksetzen einer Transaktion ermöglicht werden (ROLLBACK TO SAVEPOINT). Um konkurrierende Zugriffe zwischen zwei oder mehr Transaktionen zu regeln, stehen vier Sperrstufen zur Verfügung. Diese Sperren werden durch den SQL-Server automatisch in Abhängigkeit von der ausgeführten Operation gesetzt. Im einzelnen sind dies
Diese Sperren können auf Tabellen-, Seiten- und Satzebene vergeben werden. Die Seiten- und Satzsperren bei INSERT, UPDATE und DELETE Anweisungen werden durch den SQL-Server gesetzt. Dabei ist es von der Definition der jeweiligen Tabelle abhängig, ob Seiten- oder Satzsperren verwendet werden. Neben den Sperren, die durch den SQL-Server vergeben werden, können explizit Sperren auf Tabellenebene (LOCK TABLE) und auch auf Satzebene (LOCK ROW) vergeben werden.
Um die Wahrung der Datenintegrität flexibel verwalten zu können, stehen
vier verschiedene Isolation Level zur Verfügung, über die festgelegt
werden kann, welche gesperrten Datenelemente gelesen werden können, bzw.
wie gelesene Datenelemente gesperrt werden.
Die Isolation Level haben die folgenden Wirkungen:
Bei jedem Isolation Level läßt sich ein Constant-Locking aktivieren, bei dem alle gelesenen Datensätze mit einem Constant-Lock gesperrt werden. Diese Sperre erlaubt das parallele Bearbeiten von Datensätzen durch mehere Benutzer, ohne daß es zu einem "Lost Update" Problem kommen kann.