KB Article #177803

Avoid MS SQL deadlocks by setting READ_COMMITTED_SNAPSHOT

Problem

-- Database deadlocks seen in the logs, might be related to message purge or message tracker queries

-- Message tracker queries take a long time or time out


Resolution

Set the database isolation level to "READ_COMMITTED_SNAPSHOT" (default being "READ_COMMITTED"). This will cause the database not to lock on READ, thus avoiding unessacary locks and deadlocks.

ALTER DATABASE [database] SET READ_COMMITTED_SNAPSHOT ON


** To check if this option is enabled the following query can be executed:

SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name=[database]