问题描述
我们使用 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 属性的位置
解决方法
自动提交是SQL Server的默认行为,将其关闭集合implicit_transactions 上:
设定在BEGIN TRANSACTION模式到隐式的,该连接。
当ON时,系统处于隐性事务模式。这意味着 如果@@TRANCOUNT = 0,则以下任一 Transact-SQL 语句 开始新的交易。它相当于一个看不见的BEGIN 被首先执行交易:
- ALTER TABLE
- FETCH
- REVOKE
- BEGIN TRANSACTION
- GRANT
- SELECT(见下面的例外。)
- 创建
- 插入
- 截断表
- 删除
- OPEN
- 更新
- DROP
当OFF,每个前述的T-SQL语句是由有界 看不见的BEGIN TRANSACTION和COMMIT看不见TRANSACTION语句。 当关,我们说的交易模式是自动提交。如果你的T-SQL 代码明显发出BEGIN TRANSACTION,我们说的交易模式 是显式的。
所以只需打开一个查询窗口(会话)并运行:
set implicit_transactions on
在Azure中的Data Studio缺省情况下可以在这里设置的:
但是,如果你这样做,你正在编写一个可重复使用的脚本,记得设置添加到脚本本身,以便与不同的交易行为另一个用户doen't运行它。