How to find current transaction level? How to find current transaction level? sql-server sql-server

How to find current transaction level?


Run this:

SELECT CASE transaction_isolation_level WHEN 0 THEN 'Unspecified' WHEN 1 THEN 'ReadUncommitted' WHEN 2 THEN 'ReadCommitted' WHEN 3 THEN 'Repeatable' WHEN 4 THEN 'Serializable' WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL FROM sys.dm_exec_sessions where session_id = @@SPID

docs.microsoft.com reference for the constant values.


just run DBCC useroptions and you'll get something like this:

Set Option                  Value--------------------------- --------------textsize                    2147483647language                    us_englishdateformat                  mdydatefirst                   7lock_timeout                -1quoted_identifier           SETarithabort                  SETansi_null_dflt_on           SETansi_warnings               SETansi_padding                SETansi_nulls                  SETconcat_null_yields_null     SETisolation level             read committed


SELECT CASE            WHEN transaction_isolation_level = 1              THEN 'READ UNCOMMITTED'           WHEN transaction_isolation_level = 2                AND is_read_committed_snapshot_on = 1              THEN 'READ COMMITTED SNAPSHOT'           WHEN transaction_isolation_level = 2                AND is_read_committed_snapshot_on = 0 THEN 'READ COMMITTED'           WHEN transaction_isolation_level = 3              THEN 'REPEATABLE READ'           WHEN transaction_isolation_level = 4              THEN 'SERIALIZABLE'           WHEN transaction_isolation_level = 5              THEN 'SNAPSHOT'           ELSE NULL       END AS TRANSACTION_ISOLATION_LEVEL FROM   sys.dm_exec_sessions AS s       CROSS JOIN sys.databases AS dWHERE  session_id = @@SPID  AND  d.database_id = DB_ID();