你如何在SQL Server会话中设置自动提交?你如何在SQL Server会话中设置自动提交?(H

2019-05-17 07:31发布

你如何在SQL Server会话中设置自动提交?

Answer 1:

您可以通过设置IMPLICIT_TRANSACTIONS OFF关闭自动提交ON:

SET IMPLICIT_TRANSACTIONS OFF

当设置为ON时,它返回到隐性事务模式。 在隐性事务模式,每次你做的改变开始,你必须手动提交一个交易。

也许一个例子是清晰的。 这将写更改了数据库:

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
COMMIT TRANSACTION

这不会写的变化到数据库:

SET IMPLICIT_TRANSACTIONS ON
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

下面的例子将更新行,然后抱怨说,有没有事务提交:

SET IMPLICIT_TRANSACTIONS OFF
UPDATE MyTable SET MyField = 1 WHERE MyId = 1
ROLLBACK TRANSACTION

像米奇小麦说,自动提交对SQL Server 2000和的默认。



Answer 2:

我想要一个更持久和更快捷的方法。 因为我总是忘记写我的实际更新之前添加额外的线路/插入查询。

我通过检查SET IMPLICIT_TRANSACTIONS复选框从选项做到了。 导航到选项选择工具>选项>查询执行器> SQL Server> ANSI在您的Microsoft SQL Server Management Studio中。

只要确保执行commitrollback完成后执行你的查询后。 否则,你会运行查询表将被锁定为别人着想。



Answer 3:

自动提交是SQL Server的默认事务管理模式。 (SQL 2000年起)

参考: 自动提交事务



Answer 4:

与SQLServer的2005 Express的,我发现,即使关闭自动提交 ,插入到一个db表中没有我的实际发放从Management Studio中会话的commit命令提交。 唯一的区别是,当自动提交被关闭,我可以回滚所有插入; * 自动提交 ,我不能。 * 其实,我错了。 随着自动提交模式的时候,我看到的只是从其中的命令发出的QA(查询分析器)窗口中的变化。 如果我打开一个新的QA(查询分析器)窗口中,我没有看到的第一个窗口(会话)所做的更改,即它们没有承诺! 我必须发出明确的commit或rollback命令做出其他会话(QA窗口)可见的变化- 我的厉害! 事情是否正常工作。



文章来源: How do you set autocommit in an SQL Server session?