首页 > 解决方案 > 长时间运行的 SQL Server 报告,如何在异步模式下运行它们

问题描述

我有一些运行时间超过 10 分钟的长时间运行的 SQL Server 报告,我如何在它们运行的​​异步模式下运行它们,然后提醒用户它可用。

我使用 SQL Server 2014 并在带有 Reports/RDLC 的报表查看器中的 .NET 应用程序中运行报表。我愿意更改应用程序,但无法重写数百个报告和查询。查询已经过优化,所以现在剩下的就是使其异步。

标签: .netsql-serverasynchronousrdlcreportviewer

解决方案


您可以在服务器端使用一些 Pub/Sub 或后台作业,例如,您可以使用HangFire安排一些后台作业(您的报告计算),然后当作业准备好时,您需要以某种方式从服务器传递计算数据- 到客户端,为此您需要在继续工作时指定如何完成,例如,这可以使用SignalR完成

如果您不想要任何第三方,这将有点棘手,例如,您可以编写基于channelsBlockingCollection或其他任何内容的自定义 Pub/Sub。然后在客户端,您将需要使用某种使用 AJAX 请求的长拉,或者仅使用 WebSockets 以便在服务器准备好时从服务器检索数据。


推荐阅读