每次我在 SQL Server 中更新表行时,更新都会成功运行,我也确认并显示行已更新。但是,第二天当我检查时,我发现我所做的更新已经回滚。我还检查了是否有任何交易打开但没有。我不在事务中运行我的更新语句,因此我不必在之后提交任何事务。这种情况已经发生了一段时间,真的很烦人。
任何帮助将不胜感激。
每次我在 SQL Server 中更新表行时,更新都会成功运行,我也确认并显示行已更新。但是,第二天当我检查时,我发现我所做的更新已经回滚。我还检查了是否有任何交易打开但没有。我不在事务中运行我的更新语句,因此我不必在之后提交任何事务。这种情况已经发生了一段时间,真的很烦人。
任何帮助将不胜感激。
您正在使用的服务器或数据访问机制(即 ADO.NET)可能未配置为自动提交事务。这个 MSDN 网站声明;
自动提交模式是 SQL Server 数据库引擎的默认事务管理模式。每个 Transact-SQL 语句在完成时都会提交或回滚。如果语句成功完成,则提交;如果遇到任何错误,则回滚。只要此默认模式未被显式或隐式事务覆盖,与数据库引擎实例的连接就会在自动提交模式下运行。自动提交模式也是 ADO、OLE DB、ODBC 和 DB-Library 的默认模式。
尝试明确地将您的 UPDATE 放入事务中并提交以查看是否保存。还请您的 DBA 查看 SQL Server 上是否有任何设置将默认事务管理模式更改为将 autocommit 设置为 false。