2012-12-14 60 views

回答

2

客户端发送Attention信号到服务器:

客户端可以中断和通过发送Attention信息取消当前请求。这也被称为带外数据,但是当前正在发送的任何TDS数据包必须在发送注意消息之前完成。在客户端发送注意消息后,客户端必须读取,直到它收到注意确认。

发动机将中止batch在第一次机会(对所有实际的原因,马上),并发送回Attention ack。在某些状态下,批次不能被中断,例如。同时回滚交易。在这种情况下,客户端可能会请求中止,但只有在服务器终止不可中断的工作后才会出现响应。

以上情况适用于任何SQL Server客户端堆栈,例如。完全相同的是SqlCommand.CommandTimeout如何工作。

KILL命令以非常类似的方式工作,但不是客户端 - 服务器通信,而是杀死SPID - >受害者 - SPID通信。