如何检测已启用READ_COMMITTED_SNAPSHOT?


130

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

我找不到在T-SQL或通过Management Studio的GUI来检测到此问题的简单方法。

TIA

Answers:


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

返回值:

  • 1READ_COMMITTED_SNAPSHOT选项为ONREAD COMMITTED隔离级别下的读取操作基于快照扫描,并且不获取锁定。
  • 0(默认):READ_COMMITTED_SNAPSHOT选项为OFFREAD COMMITTED隔离级别下的读取操作使用Shared(S)锁

7
我喜欢“ DBCC USEROPTIONS”,更容易记住。
ProVega

5
@ProVega-DBCC USEROPTIONS不返回is_read_committed_snapshot_on的值。
卡斯滕·舒特(CarstenSchütte)

3
  1. 根据https://msdn.microsoft.com/zh-cn/library/ms180065.aspx,“当数据库选项READ_COMMITTED_SNAPSHOT设置为ON且事务隔离级别为设置为“读已提交”。实际的隔离级别为已读已提交。”

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


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

6
请尝试阅读此stackoverflow.com/about,以在此处获得更多关于问题/答案的理解。您的贡献没有回答这个问题。它更多是一条评论,您可以在增加声誉
后再

1
答案是正确的,因为它试图回答问题“有办法吗?”。但是,只说出什么是行不通的,就不会得到太多的认可。
Christian Strempfer,2015年

4
的隔离级别DBCC USEROPTIONS确实会告诉您。如果read committed snapshot打开,则打开,否则关闭
Greg

@Greg-读取提交的快照是在数据库级别而不是用户连接级别设置的。DBCC USEROPTIONS不会告诉您它是打开还是关闭。
JasonS
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.