MSDN online article "Choosing Row Versioning-based Isolation Levels" states:
- "tempdb must have enough disk space for the version store. If there are very long-running transactions, all the versions generated by update transactions during the time must be kept in
tempdb
. Iftempdb
runs out of space, update operations do not fail, but read operations using row versioning might fail"
Can you explain me why?
taking into account that (quoting the same article):
- "When either the
READ_COMMITTED_SNAPSHOT
orALLOW_SNAPSHOT_ISOLATION
database options are ON, update and delete transactions for a particular database must maintain row versions even when there are no transactions using a row versioning-based isolation level... Because the record versions are stored in tempdb"
that is, update (but not read) operations require space for row versioning should have IMO failed due to lack of space.
And why do read ops fail if they do not require version storage in tempdb ?