.net - 长时间运行的 SQL Server 报告,如何在异步模式下运行它们
问题描述
我有一些运行时间超过 10 分钟的长时间运行的 SQL Server 报告,我如何在它们运行的异步模式下运行它们,然后提醒用户它可用。
我使用 SQL Server 2014 并在带有 Reports/RDLC 的报表查看器中的 .NET 应用程序中运行报表。我愿意更改应用程序,但无法重写数百个报告和查询。查询已经过优化,所以现在剩下的就是使其异步。
解决方案
您可以在服务器端使用一些 Pub/Sub 或后台作业,例如,您可以使用HangFire安排一些后台作业(您的报告计算),然后当作业准备好时,您需要以某种方式从服务器传递计算数据- 到客户端,为此您需要在继续工作时指定如何完成,例如,这可以使用SignalR完成
如果您不想要任何第三方,这将有点棘手,例如,您可以编写基于channels或BlockingCollection或其他任何内容的自定义 Pub/Sub。然后在客户端,您将需要使用某种使用 AJAX 请求的长拉,或者仅使用 WebSockets 以便在服务器准备好时从服务器检索数据。
推荐阅读
- flutter - Flutter-如何在画布上从相机/图库中绘制图像?
- c++ - C++:strtok 的问题
- performance - zsh 使用 prezto 启动提示极慢
- xaml - 如何将命令绑定到 Xamarin 表单中的条目“未聚焦”事件
- c# - Replace usage of unwanted foreach with new query in EF
- python-2.7 - 在 sklearn 中生成各向异性数据
- python-3.x - 抓取 Quora 时无法提取 JavaScript 元素
- javascript - 拖放如何更改可拖动元素的内容
- r - R 函数,它接受一个对象并返回在 R 解释器中生成该对象所需的代码
- blockchain - 如何在 Corda 中创建派对?