读取SQL Server的IMPLICIT_TRANSACTIONS值:仅位掩码方式?SSMS有对话框吗?
关于查看SQL Server 2012中IMPLICIT_TRANSACTIONS设置的解答
1. 位掩码操作不是唯一的查看方式
除了你提到的位掩码查询,还有几种更直观的方法:
- 使用
DBCC USEROPTIONS命令:执行这个命令后,会返回当前连接的所有会话级设置,其中就包含implicit_transactions的键值对,直接就能看到是ON还是OFF。示例:DBCC USEROPTIONS; - 查询动态管理视图
sys.dm_exec_sessions:通过过滤当前会话ID(@@SPID),可以查看会话的options列,不过这里还是需要位运算来提取对应值,其实不如DBCC USEROPTIONS直接。示例:SELECT CASE WHEN (options & 2) = 2 THEN 'ON' ELSE 'OFF' END AS IMPLICIT_TRANSACTIONS FROM sys.dm_exec_sessions WHERE session_id = @@SPID;
2. SSMS 2016确实有对话框可以查看设置
你可以通过两种路径查看:
- 查看SSMS默认连接设置:点击顶部菜单栏的「工具」→「选项」,在弹出的窗口中依次展开「查询执行」→「SQL Server」→「高级」,在列表里找到「SET IMPLICIT_TRANSACTIONS」,就能看到它的默认状态(这个是新建连接时会使用的设置)。
- 查看当前查询窗口的设置:打开目标查询窗口后,点击顶部菜单栏的「查询」→「查询选项」,同样在「高级」标签页里找到「SET IMPLICIT_TRANSACTIONS」,这里显示的是当前窗口的会话设置。
需要注意的是:对话框里的设置是SSMS层面的配置,如果是已经运行中的会话,它的设置可能和默认不同,这种情况下还是用SQL命令(比如DBCC USEROPTIONS)查看更准确。
内容的提问来源于stack exchange,提问作者samus




