【问题标题】:Run SSIS job from SSRS report button?从 SSRS 报告按钮运行 SSIS 作业?
【发布时间】:2016-02-08 02:46:51
【问题描述】:

我可能确定无法完成,但无论如何我会与你们核实。

我们有和SSIS 工作和SSRS 报告。 SSIS 作业将数据从远程系统生成到我们的本地服务器; SSRS 报告报告从 SSIS 作业生成的本地数据。

来自 SSIS 作业的数据每天更改无数次,但 SSIS 作业仅每小时更新一次。因此,假设作业在上午 7:01 运行,用户在上午 7:50 生成报告。数据很可能在这 49 分钟内发生了变化。

所以我有两个选择: 1. 从用于报告的存储过程中执行 SSIS 作业。因此,当我调用报表时,SP 将首先执行 SSIS 作业并更新数据,然后执行返回报表数据的 SELECT 语句。这里的问题是 SSIS 作业需要几秒钟,所以看起来报告很慢。

  1. 在 SSRS 报告中添加一些按钮以执行 SSIS 作业。这样,如果用户在报告中得到过时的结果,他可以调用 SSIS 作业并再次运行报告。

所以我倾向于第二个,但我不知道是否可以在报告中添加另一个按钮来执行 SSIS 作业。我也想为此使用 SSRS(即不创建显示报告的网络表单)。

感谢任何帮助。

【问题讨论】:

  • SSIS 工作有多复杂?只是复制数据吗?您可能想研究某种复制设置,而不是每小时手动复制数据。

标签: sql-server-2008 reporting-services ssis ssrs-2008 ssrs-2008-r2


【解决方案1】:

谈到第二个选择,您可以创建一个@RunJob 参数,可能是Boolean 类型,然后在数据集中验证用户是否选择了True 来运行该作业。您应该将默认值设置为False,以避免每次生成报告时都执行作业。

如果参数@RunJob 为True,则在数据集查询中使用sp_start_job 存储过程来运行执行SSIS 包的作业,否则只检索报告数据。

虽然这可以帮助您获得所需的东西,但我不建议您这样做 将 SSRS 用于您的目的,因为它并非旨在影响 底层数据库。

如果这对你有帮助,请告诉我。

【讨论】:

  • 实现'刷新按钮'的效果。您可以隐藏此参数,并添加一个带有“刷新数据”的文本框,其操作设置为“转到报告”;将此参数设置为 True。
【解决方案2】:

您可以使用参数来确定是否运行存储过程。将默认设置为 NO

在数据集的开头添加一行检查参数并在必要时运行 SP(参数 = 是)

IF @RUN_SP = 'YES'
  EXEC SP_Refresh_Data

如果用户想要刷新,他将参数更改为YES并重新运行。

【讨论】:

    【解决方案3】:

    您可以构建一个运行 SSIS 包的 ASP.NET 页面;我认为通过调用 page_load 函数中先前答案中提到的 sp_start_job 过程。 然后,您可以从 SSRS 报告中调用页面,例如通过将文本框的操作设置为页面的 url。 我认为这会奏效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多