NOLOCK Wenn diese Option ausgewählt ist, liest oder verändert SQL Server Daten ohne jegliche Sperren. In diesem Fall kann der Benutzer Daten aus einer nicht gebundenen Transaktion oder einem Rollback, bekannt als "Dirty Data", lesen.
HOLDLOCK Wenn diese Option ausgewählt ist, hält SQL Server diese geteilte Sperre bis zum Ende der gesamten Transaktion aufrecht, ohne sie unterwegs freizugeben.
UPDLOCK Wenn diese Option ausgewählt ist, verwendet SQL Server beim Lesen der Daten ein Modified-Lock anstelle eines gemeinsamen Locks und hält dieses Lock bis zum Ende der gesamten Transaktion oder des Befehls aufrecht. Diese Option stellt sicher, dass mehrere Prozesse gleichzeitig Daten lesen können, aber nur dieser Prozess die Daten ändern kann.
TABLOCK Wenn diese Option ausgewählt ist, legt SQL Server eine gemeinsame Sperre auf die gesamte Tabelle, bis der Befehl endet. Diese Option stellt sicher, dass andere Prozesse die Daten nur lesen und nicht verändern können.
PAGLOCK Diese Option ist die Standardoption, und wenn ausgewählt, verwendet SQL Server eine geteilte Seitensperre.
TABLOCKX (Exklusives Tischschloss) Wenn diese Option ausgewählt ist, setzt SQL Server eine Sperre auf die gesamte Tabelle, bis der Befehl oder die Transaktion endet. Dies verhindert, dass andere Prozesse die Daten in der Tabelle lesen oder verändern.
HOLDLOCK hält das geteilte Schloss, bis die gesamte Transaktion abgeschlossen ist, und sollte freigegeben werden, sobald das gesperrte Objekt nicht mehr benötigt wird, entsprechend dem SERIALIZABLE-Transaktionsisolationsniveau
Die NOLOCK-Anweisung wird ausgeführt, ohne eine gemeinsame Sperre auszustellen, was Dirty Reads erlaubt, was dem READ UNCOMMITTED Transaktionsisolationslevel entspricht
PAGLOCK verwendet mehrere Seitensperren, bei denen eine Tabellensperre verwendet wird
READPAST erlaubt es dem SQL-Server, alle gesperrten Zeilen zu überspringen und Transaktionen auszuführen, und bei READ UNCOMMITTED Transaktionsisolationsstufen nur RID-Sperren zu überspringen, nicht Seiten-, Zonen- und Tabellensperren
ROWLOCK erzwingt die Verwendung von Rowlocks
TABLOCKX erzwingt die Verwendung einer exklusiven Tabellensperre, die verhindert, dass andere Transaktionen die Tabelle während der Transaktion verwenden
UPLOCK erzwingt die Verwendung von Updates beim Lesen einer Tabelle ohne geteilte Sperre
Hinweis: Der Unterschied zwischen dem Sperren einer Tabelle in einer Datenbank AUSWÄHLEN * AUS der Tabelle MIT (HOLDLOCK) Andere Transaktionen können die Tabelle lesen, können aber nicht aktualisieren oder löschen AUSWÄHLEN * AUS der Tabelle MIT (TABLOCKX) Andere Transaktionen können keine Tabellen lesen, aktualisieren und löschen |