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

时间:2015-11-06 20:53:16

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

我可能确定无法完成,但无论如何我都会和你们一起检查。

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

来自SSIS作业的数据每天都会无数次更改,但SSIS作业每小时更新一次。所以,让我们说工作在上午7:01运行,用户在上午7:50生成报告。这些数据可能在49分钟内发生了变化。

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

  1. 向将执行SSIS作业的SSRS报告添加一些按钮。这样,如果用户在报告中获得过时的结果,他就可以调用SSIS作业并再次运行报告。
  2. 所以我倾向于第二个,但我不知道是否可以在执行SSIS工作的报告中添加另一个按钮。我也想使用SSRS(即不创建显示报告的网络表单)。

    感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

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

enter image description here

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

  

虽然这可以帮助您获得所需,但我不建议您这样做   将SSRS用于您的目的,因为它无论如何都不会影响   底层数据库。

请告诉我这是否可以帮助您。

答案 1 :(得分:1)

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

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

IF @RUN_SP = 'YES'
  EXEC SP_Refresh_Data

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

答案 2 :(得分:0)

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