You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server执行长时Update查询时服务器断电,数据会发生什么变化?

SQL Server 断电场景下Update查询的数据变化问题

这是SQL Server事务机制相关的经典面试题,具体场景为:假设一条Update查询完整执行需要30秒,查询运行过程中部署SQL Server的服务器突然断电,两种场景下的数据变化如下:

场景1:未使用Transaction包裹的Update查询

SQL Server默认开启自动提交事务模式,单条DML语句本身会作为一个独立的隐式事务执行,遵循事务的原子性要求:

  • 如果断电时这条Update还没执行完成、事务未提交:SQL Server重启后会通过事务日志回滚这条Update已经执行的所有修改,数据完全恢复到语句执行前的状态,相当于这条Update从来没运行过
  • 如果断电前刚好整条Update执行完成、事务已经提交:所有修改会永久生效,不会丢失
    核心结论:单条未显式包裹事务的Update本身是原子操作,不会出现部分修改生效的中间状态

场景2:使用Transaction包裹的Update查询

显式事务的提交完全由手动执行的COMMIT语句触发:

  • 如果断电时还没有执行COMMIT语句:不管这条Update是已经执行完还是执行到一半,SQL Server重启后都会回滚整个显式事务的所有修改,数据恢复到事务开启前的状态
  • 如果断电前已经执行了COMMIT语句且对应的事务日志已经持久化到磁盘:事务内的所有修改都会永久生效,不会丢失

内容的提问来源于stack exchange,提问作者Baber Ali Siddique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:27:00