Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ServerConnection.Cancel方法_C#_Sql Server_Smo - Fatal编程技术网

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
之间,如果您需要执行多个批,并且每个批在一个连接时间线内包含多个命令。