我在客户端工作站上拔插头,长时间运行的数据库进程会发生什么?

Ang*_*ker 8 .net c# transactions sql-server-2005 .net-3.5

可能重复:
SQL Server和事务中间的连接丢失

我有一个.NET 3.5客户端应用程序,它启动MS SQL Server 2005上长时间运行(5-10米)的存储过程.存储的过程开始于BEGIN TRAN和结束COMMIT TRAN.

如果我拉动工作站上的插头,存储过程会发生什么,它是否完成运行?它在所有情况下都能完成运行吗?或者与工作站的连接丢失会导致数据库中止存储过程吗?

编辑:工作站和SQL Server在不同的框上.

And*_*ber 4

工作站断电不一定会导致 SP 中止,但很可能会导致事务回滚。

我说“可以”是因为它确实取决于客户端何时失去权力。如果网络连接丢失到像这样的“黑洞”中,服务器将不会立即收到任何断开连接发生的通知;它必须依赖 TCP 最终告诉它连接已死,仅仅是因为对方在 X 时间内没有响应任何内容。

这与显式地“正常”地断开客户端应用程序的连接不同;在这种情况下,客户端会显式关闭连接(如果适用),因此 SQL 会立即知道客户端已消失。