In MS SQL Server, in order to run a transaction with SNAPSHOT isolation level, it first needs to be turned on at the database level.
I can only assume that turning this flag ON comes with some downsides the DBA needs to be aware of. But I don't know what they are.
Why is it not ON by default?
PS. Note I'm not talking about the READ_COMMITTED_SNAPSHOT
version of the READ COMMITTED
isolation level.
The costs are described on the page Choosing Row Versioning-based Isolation Levels.
Some are:
There are other costs listed also, but the above are ones which seem to apply, whether or not any transaction within the database is actually using one of the Row Versioning-based levels.