C# ServerConnection.Cancel方法
C# ServerConnection.Cancel方法,c#,sql-server,smo,C#,Sql Server,Smo,SqlCommand类有一个方法,根据文档,该方法允许取消命令 我正在寻找一种等效的方法,用于通过。ServerConnection类(服务器类的connectioncontext字段),但文档中不清楚它的作用。SeverConnection.Cancel()方法的工作方式与SqlCommand.Cancel()方法类似,状态如下: 如果没有要取消的内容,则不会发生任何内容。但是,如果有一个命令正在处理中,并且尝试取消失败,则不会出现异常 生成 在某些罕见的情况下,如果调用ExecuteRead
SqlCommand
类有一个方法,根据文档,该方法允许取消命令
我正在寻找一种等效的方法,用于通过。
ServerConnection
类(服务器类的connectioncontext字段),但文档中不清楚它的作用。SeverConnection.Cancel()
方法的工作方式与SqlCommand.Cancel()
方法类似,状态如下:
如果没有要取消的内容,则不会发生任何内容。但是,如果有一个命令正在处理中,并且尝试取消失败,则不会出现异常
生成
在某些罕见的情况下,如果调用ExecuteReader,则调用Close
(隐式或显式)在调用Cancel之前,然后调用
取消,取消命令将不会发送到SQL Server和
调用Close后,结果集可以继续流式处理。为了避免这种情况,,
请确保在关闭读卡器或之前调用Cancel
连接
这意味着如果在调用close()
方法之前调用cancel方法,将起作用。
如果您在之后调用它,则该命令将不会发送到sql,从而导致继续流到sql after以调用close()
方法。
此外,如果有一个命令正在执行,并且取消尝试失败,您将不会收到错误,因为在这种情况下不会生成异常。我建议避免SMO。它有一大堆问题,包括甚至不能远程线程安全。我最终扔掉了它,用
sys.
views做了所有的事情。也许你想断开服务器连接?SQL Profiler似乎也不清楚它的功能。无论它做什么,都不会在SQL Profiler中显示为注销事件,或者我能识别的任何其他事件。我可以取消连接,然后继续我正在做的事情,而不会抛出任何错误。我和乔纳森·艾伦在一起。在没有SMOs的情况下执行。仅当您为要在中执行的命令定义了SqlBatch
时,“取消”才有用。这通常是通过SqlConnection
对象完成的,但是可以在SqlConnect
和SqlCommand
之间,如果您需要执行多个批,并且每个批在一个连接时间线内包含多个命令。