如何检测READ_COMMITTED_SNAPSHOT已启用?

在MS SQL Server中,有一种方法可以检测数据库是否通过T-SQL命令设置了隔离级别ALTER DATABASE <database> SET READ_COMMITTED_SNAPSHOT ON;

我无法在T-SQL中或通过Management Studio的GUI中find一种简单的方法来检测这种情况。

TIA

 SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name= 'YourDatabase' 

返回值:

  • 1READ_COMMITTED_SNAPSHOT选项为ONREAD COMMITTED隔离级别下的读取操作基于快照扫描,不会获取locking。
  • 0 (默认): READ_COMMITTED_SNAPSHOT选项为OFFREAD COMMITTED隔离级别下的读取操作使用Shared(S)locking 。
  1. 根据https://msdn.microsoft.com/en-us/library/ms180065.aspx ,“当数据库选项READ_COMMITTED_SNAPSHOT设置为ON且事务隔离级别为”时,DBCC USEROPTIONS报告隔离级别为“读取已提交的快照”设置为'read committed'。实际的隔离级别被读取提交。“

  2. 同样在SQL Server Management Studio中,在Options-> Miscellaneous下的数据库属性中有“正在读取已提交的快照”选项状态

DBCC USEROPTIONS在SQL2005和2012上DBCC USEROPTIONS显示is_read_committed_snapshot_on

 Set Option Value textsize 2147483647 language us_english dateformat mdy datefirst 7 lock_timeout -1 quoted_identifier SET arithabort SET ansi_null_dflt_on SET ansi_warnings SET ansi_padding SET ansi_nulls SET concat_null_yields_null SET isolation level read committed