Ich habe gelesen, dass die Abfrage keine Sperren ausgeben sollte, wenn ich IsolationLevel.ReadUncommitted verwende. Als ich dies testete, sah ich jedoch das folgende Schloss:
Resource_Type: HOBT
Request_Mode: S (gemeinsam genutzt)
Was ist ein HOBT-Schloss? Etwas im Zusammenhang mit HBT (Heap oder Binary Tree Lock)?
Warum sollte ich immer noch ein S-Schloss bekommen?
Wie vermeide ich das gemeinsame Sperren bei Abfragen, ohne die Snapshot-Option für die Isolationsstufe zu aktivieren?
Ich teste dies auf SQLServer 2008 und die Snapshot-Option ist deaktiviert. Die Abfrage führt nur eine Auswahl durch.
Ich kann sehen, dass Sch-S erforderlich ist, obwohl SQL Server es in meiner Sperrabfrage nicht anzuzeigen scheint. Wie kommt es, dass immer noch ein Shared Lock ausgegeben wird? Gemäß:
SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
Transaktionen, die auf dieser
READ UNCOMMITTED
Ebene ausgeführt werden, setzen keine gemeinsam genutzten Sperren aus, um zu verhindern, dass andere Transaktionen die von der aktuellen Transaktion gelesenen Daten ändern.
Ich bin also etwas verwirrt.