如何检测READ_COMMITTED_SNAPSHOT已启用?
在MS SQL Server中,有一种方法可以检测数据库是否通过T-SQL命令设置了隔离级别ALTER DATABASE <database> SET READ_COMMITTED_SNAPSHOT ON;
我无法在T-SQL中或通过Management Studio的GUI中find一种简单的方法来检测这种情况。
TIA
SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name= 'YourDatabase'
返回值:
- 1 :
READ_COMMITTED_SNAPSHOT
选项为ON 。READ COMMITTED
隔离级别下的读取操作基于快照扫描,不会获取locking。 - 0 (默认):
READ_COMMITTED_SNAPSHOT
选项为OFF 。READ COMMITTED
隔离级别下的读取操作使用Shared(S)locking 。
-
根据https://msdn.microsoft.com/en-us/library/ms180065.aspx ,“当数据库选项READ_COMMITTED_SNAPSHOT设置为ON且事务隔离级别为”时,DBCC USEROPTIONS报告隔离级别为“读取已提交的快照”设置为'read committed'。实际的隔离级别被读取提交。“
-
同样在SQL Server Management Studio中,在Options-> Miscellaneous下的数据库属性中有“正在读取已提交的快照”选项状态
DBCC USEROPTIONS
在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