从异步SQL查询中获取结果

时间:2016-09-15 13:28:32

标签: sql-server asynchronous ado.net

我正在创建一个连接到SQL Server数据库并使用ado.net执行脚本的程序(不一定是ado.net)。我需要异步执行脚本,也就是说,我不想等待结果。但是我需要在程序退出后执行脚本的结果,因为脚本可能需要很长时间才能完成,因此我不能只使用回调或类似的方法创建异步任务。

那么,是否可能,如果可能,我如何获得脚本执行的结果(行或错误和类似数据)?

执行脚本时,是否有办法告诉SQL服务器将结果保存到某个文件中?

由于

2 个答案:

答案 0 :(得分:0)

我的回答是基于您上面的评论(不包括ASP.NET)。

您可以使用TaskFactory来执行火灾&忘记了一段代码。假设您已创建SQL Server代理作业 - 您可以调用sp_start_job传递作业名称。设置作业时,输出到文件选项位于“高级”部分。

控制台应用示例:

0 save period in seconds

答案 1 :(得分:0)

我已经通过在PowerShell中运行scriptblock作为工作解决了这个问题(在新的Powershell会话中运行的作业)。 Scriptblock包含sql脚本执行代码(非异步)并等待结果,然后将结果写入磁盘上的文件。

Start-Job -ScriptBlock $scriptBlock -ArgumentList $ConnectionString, ...

新会话已开始且已隐藏' (没有窗户等)。并且一直运行直到脚本块运行完毕。