我可能确定无法完成,但无论如何我都会和你们一起检查。
我们有SSIS
工作和SSRS
报告。 SSIS
作业从远程系统生成数据到本地服务器; SSRS
报告报告了SSIS
作业生成的本地数据。
来自SSIS作业的数据每天都会无数次更改,但SSIS作业每小时更新一次。所以,让我们说工作在上午7:01运行,用户在上午7:50生成报告。这些数据可能在49分钟内发生了变化。
所以我有两个选择: 1.从用于报告的存储过程中执行SSIS作业。因此,当我调用报表时,SP将首先执行SSIS作业并更新数据,然后它将执行返回报表数据的SELECT语句。这里的问题是SSIS工作需要几秒钟,因此报告看起来很慢。
所以我倾向于第二个,但我不知道是否可以在执行SSIS工作的报告中添加另一个按钮。我也想使用SSRS(即不创建显示报告的网络表单)。
感谢任何帮助。
答案 0 :(得分:1)
谈到第二个选择,您可以创建一个@RunJob
参数可能Boolean
类型,然后在数据集中验证用户是否已选择True
来运行作业。您应该将默认值设置为False
,以避免每次生成报告时都要执行作业。
在数据集查询中,如果参数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。 我认为这会奏效!