Serverseitige NOLOCK in SQL Server
-
29-09-2019 - |
Frage
Ich weiß, dass in der Oracle-DB ich einen Flag konfigurieren kann, dass alle Auswahlabfragen auf einem bestimmtes laufende DB als ausgeführt werden kann, wenn der NOLOCK
Hinweis hinzugefügt wurde.
Gibt es etwas ähnliches in SQL Server?
Lösung
Sie können die Datenbank festgelegt in READ_ONLY -Modus, der sicherlich einige der Transaktionsregeln ändern, aber ich glaube nicht, dass es etwas näher zu einem globalen NOLOCK.
Bearbeiten
Wenn Sie wollen in der Lage DELETEs, Einfügungen und Aktualisierungen durchführen, aber Sie wollen nicht, Leser zu sperren oder haben Hinweise oder Isolationsstufen angeben, können Sie auch auf READ_COMMITTED_SNAPSHOT , aber die Semantik gibt es wieder nicht ganz dasselbe wie den NOLOCK-Hinweis.
Andere Tipps
Nicht auf einer Pro-Datenbankebene. Sie können es nur tun, mit Hinweisen oder set transaction isolation level
. Sie können eine Datenbank auf schreibgeschützten Modus eingestellt, die diesen Effekt standardmäßig haben können, aber das wird in die Datenbank preclude schreibt (wie der Name schon sagt).
Dies könnte für eine Datenbank nützlich sein, die regelmäßig aktualisiert wird. Sie legen die Datenbank schreibgeschützt und setzen es für die Updates beschreibbaren dann zurück zu schreibgeschützt.
Nicht für die gesamte Datenbank, sondern für jede Abfrage, die Sie tun:
SELECT a, b
FROM t1
WITH (NOLOCK)
WHERE t1.c = @value
oder
SELECT a, b
JOIN t1
ON t1.id = t2.id
WITH (NOLOCK)
FROM t2
WHERE t2.c = @value
etc