It appears using either HOLDLOCK
or UPDLOCK
in a transaction (say T1), will not block read access from another transaction (say T2).
As I u
Serializable isolation causes a table lock to be taken if the table does not have an appropriate index for the query. HOLDLOCK causes serializable to be the effective transaction isolation level for the table that it is mentioned on.
This together with the escalation to X
that others have mentioned causes the behavior you see.