从ADO.NET或经典ADO长期运行存储过程

Bud*_*Joe 1 .net t-sql sql-server ado.net ado

假设存储过程需要10分钟才能运行并且不返回任何数据.

在SQL Server中调用存储过程并让代码不等待结果的正确方法是什么?有没有办法从T-SQL或连接中处理它?在ADO.NET和经典ActiveX ADO中有效的东西?

我想到的唯一方法是:
1)在T-SQL中创建一个作业
2)将基于T-SQL的代码加载到作业的第一步中
3)确保代码的最后一行删除作业
4)执行作业(我很确定这不会让你因为回应而停下来)我知道这是非常糟糕和苛刻的......但是

还有其他一些我没想到的T-SQL,你可以用一个存储过程来说"我知道没有回应......所以我选择不等待."?

Cha*_*ana 8

是的你可以

  1. 使用SqlCommand.BeginExecuteNonQuery()异步调用它
  2. 或者在委托上异步调用它(将使用线程池中的线程),
  3. 或者在一个单独的线程上(自己创建)
  4. 在Classic ADO中,使用Connection的Open方法中的Option参数:

    oConnection.Open(,,, adAsyncConnect)