如何检测是否启用了READ_COMMITTED_SNAPSHOT?

145
在 Microsoft SQL Server 中,有没有一种方法可以检测一个数据库是否通过 T-SQL 命令 ALTER DATABASE <database> SET READ_COMMITTED_SNAPSHOT ON; 来设置了隔离级别?我无法在 T-SQL 或管理工具的 GUI 中找到简单的方法来检测这一点。
3个回答

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

返回值:

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

7
我喜欢"DBCC USEROPTIONS",这个名称比较容易记住。 - ProVega
6
DBCC USEROPTIONS无法返回is_read_committed_snapshot_on的值。 - Carsten Schütte

4
  1. 根据DBCC USEROPTIONS (Transact-SQL)

当数据库选项READ_COMMITTED_SNAPSHOT被设置为ON并且事务隔离级别被设置为“读取已提交”时,DBCC USEROPTIONS会报告隔离级别为“读取已提交的快照”。实际隔离级别是读取已提交。

  1. 同样在SQL Server Management Studio中,在数据库属性下的选项->杂项中有“是否启用读取已提交的快照”选项状态。

0

在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

4
DBCC USEROPTIONS中的隔离级别会告诉你当前的设置。如果是“读取已提交的快照”,则说明开启了该设置;否则就关闭了。 - Greg
@Greg - 读已提交的快照是在数据库级别设置的,而不是用户连接级别。DBCC USEROPTIONS 不会告诉您它是否打开或关闭。 - JasonS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接