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

有帮助吗?

解决方案

可以通过设置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和向上的缺省值。

其他提示

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

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

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

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

价:自动提交事务

使用的SQLServer 2005 Express的,我发现是,即使是关闭自动提交后,插入到数据库中的表没有我的实际发放从Management Studio中会话的commit命令已提交。唯一的区别是,当<强>自动提交被关闭,我可以回滚所有的插入;带*号的自动提交,我不能。的* 的事实上,我错了。。通过自动提交模式关闭,我看到仅在从所述命令被发出的QA(查询分析器)窗口的更改。如果我打开一个新的QA(查询分析器)窗口中,我没有看到的第一个窗口(会话)所做的更改,即它们不是承诺!我必须发出明确的commit或rollback命令做出其他会话(QA窗口)可见的变化 - 我的坏!东西都正常工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top