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

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

TIA

有帮助吗?

解决方案

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) 锁.

其他提示

  1. 按照 https://msdn.microsoft.com/en-us/library/ms180065.aspx,“ DBCC UserOptions报告了'读取的快照'的隔离级别时,当数据库选项read_committed_snapshot设置为ON,并将交易隔离级别设置为'read read witch''。实际的隔离级别是已提交读。”

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

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top