运行 SSRS 报告按钮的 SSIS 作业?

Run SSIS job from SSRS report button?

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

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

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

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

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

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

感谢任何帮助。

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

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

While this can help you to get what you need, I don't recommend you to use SSRS for your purpose since it is not designed to affect anyway the underlying database.

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

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

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

IF @RUN_SP = 'YES'
  EXEC SP_Refresh_Data

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

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