0

我们使用 Azure Data Studio 进行 SQL Server 查询。但是,它会自动提交所有内容,我找不到禁用它的选项。我找到了这个页面https://docs.microsoft.com/en-us/sql/odbc/reference/develop-app/setting-the-commit-mode?view=sql-server-ver15但我找不到任何地方我可以设置 SQL_ATTR_AUTOCOMMIT 属性的连接设置

4

1 回答 1

1

自动提交是 SQL Server 中的默认行为,将其关闭设置implicit_transactions on:

将连接的 BEGIN TRANSACTION 模式设置为隐式。

开启时,系统处于隐式事务模式。这意味着如果@@TRANCOUNT = 0,以下任何 Transact-SQL 语句都会开始一个新事务。它相当于先执行一个看不见的 BEGIN TRANSACTION:

  • 更改表
  • 拿来
  • 撤销
  • 开始交易
  • 授予
  • SELECT(见下面的例外。)
  • 创造
  • 插入
  • 截断表
  • 删除
  • 打开
  • 更新
  • 降低

关闭时,前面的每个 T-SQL 语句都由一个看不见的 BEGIN TRANSACTION 和一个看不见的 COMMIT TRANSACTION 语句限定。当关闭时,我们说事务模式是自动提交。如果您的 T-SQL 代码明显发出 BEGIN TRANSACTION,我们说事务模式是显式的。

所以只需打开一个查询窗口(会话)并运行:

set implicit_transactions on

在 Azure Data Studio 中,您可以在此处默认设置:

在此处输入图像描述

但是如果你这样做了,并且你正在编写一个可重用的脚本,请记住将设置添加到脚本本身,这样其他用户就不会以不同的事务行为运行它。

于 2021-01-07T14:09:04.893 回答