在SP呼叫之后,当连接丢失时MSSQL会发生什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SP呼叫之后,当连接丢失时MSSQL会发生什么?相关的知识,希望对你有一定的参考价值。

我有一个通过WLAN安装在移动设备上的软件。交易在代码中打开和关闭。 businesslogic之间正在发生。现在我正在遭遇连接丢失和数据库保持开放的交易。 (MSSQL 2012)

我的解决方案是将所有事务/逻辑移动到sp。

因此客户端只调用sp并在内部处理事务。

我的问题是:如果连接断开,会发生什么?它会跑到最后吗?

答案

这在文档Controlling Transactions (Database Engine)中有介绍,特别是在事务处理过程中的错误部分:

如果错误阻止成功完成事务,SQL Server将自动回滚事务并释放事务持有的所有资源。如果客户端与数据库引擎实例的网络连接中断,则当网络通知中断实例时,将回滚该连接的所有未完成事务。如果客户端应用程序出现故障或客户端计算机出现故障或重新启动,则这也会中断连接,并且当网络通知中断时,数据库引擎实例将回滚所有未完成的连接。如果客户端注销应用程序,则回滚任何未完成的事务。

我已经强调了相关部分。

因此,如果连接断开,将事务移动到SP将不会停止回滚事务。我建议找出你的连接不稳定的原因并解决这个问题。否则,您需要找到一种在实例上本地运行查询的方法(可能使用SQL Agent)。

以上是关于在SP呼叫之后,当连接丢失时MSSQL会发生什么?的主要内容,如果未能解决你的问题,请参考以下文章

Android 在前台服务中丢失 websocket 连接

Oracle - 如果 ORA-03135 连接丢失,事务会发生啥?

memcpy在啥情况下会失败

memcpy在啥情况下会失败

Socket编程中,阻塞与非阻塞的区别

当连接未正确关闭时,为啥使用 WAL 模式的 SQLite 数据库中的数据会丢失?