You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在SQL Server Management Studio(SSMS)中关闭自动提交功能

如何在SSMS中设置手动提交/回滚每条查询(无需显式启动事务)

嘿,这个需求我太熟悉了——之前测试数据变更的时候,就怕不小心自动提交了没法回滚,刚好知道怎么调整SSMS的设置来实现:

方法一:通过SSMS选项全局设置

这是最省心的方式,设置后所有新建的查询窗口都会默认使用手动提交模式:

  • 打开SSMS,点击顶部菜单栏的 工具选项
  • 在弹出的窗口里,展开 查询执行SQL ServerANSI
  • 找到 SET IMPLICIT_TRANSACTIONS 选项,勾选它
  • 点击 确定 保存设置,重启SSMS生效(或者直接新建一个查询窗口,旧窗口不会自动应用新设置)

设置完成后,你每执行一条查询,SSMS都会自动帮你开启一个隐式事务——不需要手动写BEGIN TRANSACTION,执行完查询后,你可以手动执行:

  • COMMIT:确认提交所有变更
  • ROLLBACK:撤销所有未提交的变更

方法二:单窗口临时生效(无需修改全局设置)

如果不想全局改动,只想让当前查询窗口生效,可以手动执行这条命令:

SET IMPLICIT_TRANSACTIONS ON;

执行后,当前窗口的所有查询都会进入隐式事务模式,同样用COMMITROLLBACK来控制提交/回滚。要是想切回默认的自动提交模式,执行:

SET IMPLICIT_TRANSACTIONS OFF;

重要注意事项

  • 开启隐式事务后,一定要记得及时提交或回滚!如果忘记操作,你的会话会一直持有锁,可能影响其他业务操作
  • 多条未提交的查询会被归到同一个事务里,执行ROLLBACK会一次性撤销所有这些变更
  • 部分DDL语句(比如CREATE TABLEALTER TABLE)在SQL Server中会自动提交事务,哪怕开了隐式事务,这些语句执行后之前的未提交变更也会被自动提交,这点要特别留意

内容的提问来源于stack exchange,提问作者kalitsov

火山引擎 最新活动