In SQL Server, you can also minimize locking contention while protecting transactions from dirty reads of uncommitted data modifications using either: * The READ COMMITTED isolation level with the READ_COMMITTED_SNAPSHOT database option set to ON. * The SNAPSHOT isolation level. If READ_COMMITTED_SNAPSHOT is set to ON (the default on SQL Azure Database), the Database Engine uses row versioning to present each statement with a transactionally consistent snapshot of the data as it existed at the start of the statement. Locks are not used to protect the data from updates by other transactions. Reference: https://docs.microsoft.com/en-us/sql/t-sql/statements/set-transaction-isolation-level-transact-sql