如何检测READ_COMMITTED_SNAPSHOT是否启用?
-
09-06-2019 - |
题
在 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) 锁.
其他提示
按照 https://msdn.microsoft.com/en-us/library/ms180065.aspx,“ DBCC UserOptions报告了'读取的快照'的隔离级别时,当数据库选项read_committed_snapshot设置为ON,并将交易隔离级别设置为'read read witch''。实际的隔离级别是已提交读。”
同样在 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
不隶属于 StackOverflow