如何检测READ_COMMITTED_SNAPSHOT已启用?

Chr*_*ver 123 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

Gal*_*ian 182

SELECT is_read_committed_snapshot_on FROM sys.databases 
WHERE name= 'YourDatabase'
Run Code Online (Sandbox Code Playgroud)

返回值:

  • 1:READ_COMMITTED_SNAPSHOT选项为ON.READ COMMITTED隔离级别下的读取操作基于快照扫描,不会获取锁定.
  • 0(默认值):READ_COMMITTED_SNAPSHOT选项为OFF.READ COMMITTED隔离级别下的读取操作使用共享(S)锁定.

  • 我喜欢"DBCC USEROPTIONS",更容易记住. (6认同)
  • @ProVega - DBCC USEROPTIONS不返回is_read_committed_snapshot_on的值. (5认同)

小智 5

  1. 根据DBCC USEROPTIONS (Transact-SQL)

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

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