【发布时间】:2025-12-27 16:35:12
【问题描述】:
我有大约 100 个链接报告,每周和每月运行一次。我已经组合了一个 c# 控制台,该控制台从 db 表动态创建特定时期的 Report Server 文件夹,并从 db 表创建链接的 SSRS 报告。这些报告运行良好,但每个报告在 foreach 循环中一次运行一个,如果您在一夜之间运行它们很好,但有时这些报告会失败(无论出于何种原因)并且失败的报告在数据库中被标记为这样。
我的问题是: 如何在一个线程上运行(例如)10 个报告并同时运行每个线程——同时运行 10 个线程,因此运行所有报告的时间应该更快。这应该只需要一小部分时间来在星期一重新运行任何失败的报告。这甚至可能吗?
在我的 c# 控制台中,我使用 ReportingService2010 创建链接报告:
ReportingService2010.CreateLinkedItem(linkedReport, folder, existingReportPath, props);
ReportingService2010.SetExecutionOptions(reportPath, "Snapshot", new NoSchedule());
ReportingService2010.SetItemHistoryOptions(reportPath, true, true, new NoSchedule());
ReportingService2010.UpdateItemExecutionSnapshot(reportPath);
任何帮助将不胜感激。 非常感谢
【问题讨论】:
-
您意识到 SSRS 有一项功能,您可以在其中安排报告的运行时间?以这种方式运行它们似乎没有充分的理由。
-
您可以动态创建报表服务器文件夹并通过计划创建链接报表吗?对于每周/每月,我们需要创建一个具有新处理周期的文件夹结构,以便我们的用户可以查看任何给定时间的历史数据。
-
报告历史可以通过快照来实现。也许可以对快照进行分组或任何自定义列表。无论如何,仅依靠快照,您的整个过程都会得到很大改善:如果您运行快照,您必须完成的任务是“简单”下载每个报告的最新快照,以将其存储在适当的文件夹中。
-
感谢 Ben 和 Paulo 回复我。我们目前正在创建报告历史记录。 B 创建链接报告,我们正在创建快照。快照是在特定一周的文件夹中创建的,例如 201401。接下来的一周,我们创建相同的报告,不同的日期作为快照,并在文件夹 201402 中创建。我们正在创建大约 100 个报告,一次运行一个是没有效率。我希望找到一种在一个线程上创建 10 个报告并运行多个线程的方法。这可能吗?
标签: c# sql-server multithreading reporting-services