我正在创建一个连接到SQL Server数据库并使用ado.net执行脚本的程序(不一定是ado.net)。我需要异步执行脚本,也就是说,我不想等待结果。但是我需要在程序退出后执行脚本的结果,因为脚本可能需要很长时间才能完成,因此我不能只使用回调或类似的方法创建异步任务。
那么,是否可能,如果可能,我如何获得脚本执行的结果(行或错误和类似数据)?
执行脚本时,是否有办法告诉SQL服务器将结果保存到某个文件中?
由于
答案 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, ...
新会话已开始且已隐藏' (没有窗户等)。并且一直运行直到脚本块运行完毕。