【发布时间】:2018-08-22 17:17:05
【问题描述】:
所以我用一堆 UPDATE 语句运行了一个 SQL 批处理:
UPDATE...;
UPDATE...;
UPDATE...;
结果批处理作为单个事务运行,因此创建了许多锁(我们的数据库监控软件清楚地表明这是一个大事务)所以显然它类似于我围绕批处理编写 BEGIN...COMMIT:
BEGIN TRANS;
UPDATE...;
UPDATE...;
UPDATE...;
COMMIT;
真的是这样吗?批次总是作为一个事务执行吗? (我不在“显式事务”模式下)为什么会这样,是否可以对其进行配置,或者这只是 SQL Server 的行为?
如果我将每个语句都包装在 BEGIN..COMMIT 中,它会改变什么吗,例如:
BEGIN TRANS;
UPDATE...;
COMMIT;
BEGIN TRANS;
UPDATE...;
COMMIT;
BEGIN TRANS;
UPDATE...;
COMMIT;
谢谢!
【问题讨论】:
-
您可能禁用了自动提交。
SET IMPLICIT_TRANSACTIONS OFF。然后在每个语句更改后自动提交。
标签: sql-server