Correct Snapshot Isolation

Snapshot isolation must be enabled by setting the "ALLOW_SNAPSHOT_ISOLATION ON" database option before it is used in transactions. 

You must enable snapshot isolation in each database that uses it with the Transact-SQL ALTER DATABASE statement.

In this case, snapshot isolation differs from the traditional isolation levels of READ COMMITTED, REPEATABLE READ, SERIALIZED, and READ UNCOMMITTED, which require no configuration.


The following statements activate snapshot isolation and replace the default READ COMMITTED behavior with SNAPSHOT:

ALTER DATABASE MyDatabase
SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON

 

To check what the current snapshot isolation level is, run the following SQL:

If the query returns 0 then it is turned off.

select name, snapshot_isolation_state_desc, is_read_committed_snapshot_on from sys.databases

For avoiding lock in parallel sessions, table have to be created with ALLOW_PAGE_LOCKS = OFF option.