如何检测READ_COMMITTED_SNAPSHOT已启用?

时间:2008-09-09 14:07:12

标签: sql-server isolation-level read-committed-snapshot

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

我无法在T-SQL或Management Studio的GUI中找到一种简单的方法来检测它。

TIA

3 个答案:

答案 0 :(得分:173)

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

返回值:

  • 1 READ_COMMITTED_SNAPSHOT选项开启READ COMMITTED隔离级别下的读取操作基于快照扫描,不会获取锁定。
  • 0 (默认):READ_COMMITTED_SNAPSHOT选项关闭READ COMMITTED隔离级别下的读取操作使用Shared (S) locks

答案 1 :(得分:2)

  1. 根据https://msdn.microsoft.com/en-us/library/ms180065.aspx, &#34; DBCC USEROPTIONS报告“已提交读取快照”的隔离级别&#39;当数据库选项READ_COMMITTED_SNAPSHOT设置为ON并且事务隔离级别设置为&#39; read committed&#39;。实际的隔离级别是读取提交的。&#34;

  2. 同样在SQL Server Management Studio中,在Options-&gt; Miscellaneous下的数据库属性中,有&#34; Is Read Committed Snapshot On&#34;选项状态

答案 2 :(得分:1)

在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