可以在数据库级别设置 IMPLICIT_TRANSACTIONS 吗?

ber*_*d_k 2 sql-server-2008 sql-server

当我必须调查由 IMPLICIT_TRANSACTIONS ON 引起的问题时,我可以专注于客户端工具设置 IMPLICIT_TRANSACTIONS ON 或 ANSI_DEFAULTS ON 还是可以针对影响所有客户端的整个数据库进行设置?

我可以通过将标准脚本头更改为来避免该问题

SET ANSI_DEFAULTS ON
SET IMPLICIT_TRANSACTIONS  OFF
Run Code Online (Sandbox Code Playgroud)

但是这个设置会在哪些级别的会话、数据库、服务器上受到影响呢?

编辑:

在msdn中找到了这个

似乎可以在服务器级别进行设置。

在“服务器属性”对话框(“连接”页面)中,我发现选项已更改并编写了脚本:

隐式交易:

EXEC sys.sp_configure N'user options', N'2'
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)

隐式交易关闭:

EXEC sys.sp_configure N'user options', N'0'
GO
RECONFIGURE WITH OVERRIDE
GO
Run Code Online (Sandbox Code Playgroud)

但执行

exec('dbcc useroptions')
Run Code Online (Sandbox Code Playgroud)

SSMS中没有反映变化。对于此类连接,服务器设置似乎以某种方式被覆盖。

现在我必须重新提出这个问题,

是否有客户端不会覆盖服务器设置,并且在服务器设置更改时可能会崩溃。

Gil*_*ter 5

隐式事务是一种连接设置,它将由客户端工具和/或仅在脚本中设置。