Why is a Shared lock blocking on an IX lock when Read Committed Snapshot is enabled?
Read Committed Snapshot don't affect the lock compatibility matrix.
For reads it means that shared locks aren't acquired, and reads will use row versioning instead. Assuming you are using read committed, that is, since this is the only isolation level that is &quot;reconfigured&quot; by the Read Committed Snapshot database knob.
You evidently have shared locks, and such will block/be blocked by IX locks, according to the log compatibility matrix at https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms186396(v=sql.105)?redirectedfrom=MSDN.
So the question for you to investigate is why you have shared locks. Perhaps some parts of your app don't use Read Committed?
Paul mentions in a different thread that S locks are used for FK validations when you modify data in RCSI, which can be an explanation for the S locks:
Shared locks taken under Read Committed Snapshot Isolation (RCSI)