在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会发生什么?的主要内容,如果未能解决你的问题,请参考以下文章