【问题标题】:Exporting reports at scheduled times using .Net Application使用 .Net 应用程序在预定时间导出报告
【发布时间】:2014-12-19 18:03:59
【问题描述】:

我需要运行和导出具有相同键列的每日报告。 假设我们一天有大约 50 个报告,它在执行时运行(每个报告的时间不同),并且必须将报告导出为 excel 文件。

另一个显示报告状态的应用程序,如果用户想要查看报告,则必须在单击按钮/单击超链接时打开 Excel 文件。 完成这项任务的最佳方法是什么。我目前的方法如下

我已经为所有使用 Datestamp 将数据插入主表的报告创建了存储过程。从主表中,maxtrix 报告使用 reportid 提取报告数据,并且相同的报告用于将报告导出为 excel 文件。 存储过程在报告执行时被安排为 SQL 作业。当 proc 运行时,它会将 reportid 插入到用于数据驱动订阅(导出到 excel 文件)的表中。

数据驱动订阅每 5 分钟运行一次以生成报告。如果报表在上午 10.02 点运行并且订阅在上午 10.05 点开始,则很少有报表在执行报表过程和导出报表之间存在 5 分钟的时间延迟。 在将数据插入主表后,我正在寻找导出报告的方法。

当我尝试使用 susbcriptionid 调用 ADDEVENT 时遇到了锁定问题,因为很少有报告同时运行。

如果您有任何适用于这种情况的方法,请告诉我。

TIA

【问题讨论】:

    标签: .net wpf reporting-services ssis


    【解决方案1】:

    如何:在浏览器中使用 SSRS 显示报告并允许用户导出报告;如果用户需要更改报表,他可以将它导出到excel并更新它,当然这不会更新数据库服务器上的数据; 或者您可以使用自定义应用程序来更新数据,在 SSRS 报告中放置指向应用程序的链接,或对设计元素使用操作;

    【讨论】:

    • 我们将报告导出为 excel 文件,因此可以减少最终用户手动导出报告的时间。报告大小从 4 KB 到 3 MB 不等。此外,我正在使用一个矩阵报告,它使用报告 ID 提取不同的报告。如果最终用户导出报告,则在导出时它将具有默认名称,并且用户必须手动键入报告的名称。为了避免这些问题,我正在寻找自动导出它们的方法。为了导出,我在 SSRS webservice 的帮助下创建了一个 SSIS 包。同一个包的多个实例可以不同输入同时运行吗
    【解决方案2】:

    由于您已经使用 SSIS 包,您应该能够使用 OLE DB 命令任务运行 SSIS 包中的过程; 然后当运行存储过程的任务完成时,流程继续执行生成报告/报告的任务。

    另外我会使用 SSIS 系统变量 StartTime 作为时间戳,它是包开始运行的时间;

    【讨论】:

    • 嗨 - 感谢您的回复。抱歉,我这几天要上班,所以没能早点回复。我有另一个问题 。是否有可能我可以使用不同的参数运行多个 SSIS 包实例。我仍在努力在报告的执行时间上调用 ssis 包。如果我同时调用具有不同参数的 SSIS 包,我会遇到任何死锁吗?
    • 可以使用两个或更多配置文件运行同一个包。您将参数放在配置文件中,所以答案是肯定的,您可以使用不同的参数运行多个 SSIS 包实例。关于死锁如果你继续这样做,这取决于包的确切作用和它访问的数据,对此没有直接的答案,但如果你看到性能问题,那么也许你可以在不同的时间运行 SSIS 包。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多