我有一个通过WLAN安装在移动设备上的软件。 目前,交易已通过代码打开和关闭。在业务逻辑之间正在发生。 现在,我正遭受失去连接并在数据库上保持开放交易的痛苦。 (MSSQL 2012)
我的解决方案是将所有事务/逻辑移至sp。
因此客户端仅调用sp,并且事务在内部处理。
我的问题是: 连接丢失后会发生什么情况?它运行到最后吗?
答案 0 :(得分:1)
文档Controlling Transactions (Database Engine)(尤其是交易处理期间的错误”部分中的
)对此进行了介绍:如果错误阻止事务成功完成,则使用SQL 服务器自动回滚事务并释放所有事务 交易持有的资源。 如果客户端的网络连接 到数据库引擎实例损坏,任何未完成 网络时回滚连接的事务 通知中断实例。如果客户端应用程序失败或 如果客户端计算机关闭或重新启动,这也会中断 连接,并且数据库引擎的实例回滚任何 当网络通知中断时,显示未完成的连接。如果 客户注销该应用程序,任何未完成的交易 回滚。
我已经强调了相关部分。
因此,如果连接断开,将事务移至SP不会阻止事务回滚。我建议找出为什么您的连接不稳定并进行修复。否则,您将需要找到一种在实例上本地运行查询的方法(也许使用SQL Agent)。