【问题标题】:Executing SSRS Reports From SSIS从 SSIS 执行 SSRS 报告
【发布时间】:2015-10-21 23:22:37
【问题描述】:

我需要定期从 SSIS 执行 SSRS 报告。

在这里看到了解决方案:

https://www.mssqltips.com/sqlservertip/3475/execute-a-sql-server-reporting-services-report-from-integration-services-package/

但是在不使用 Script Task 的情况下,SSIS 中还有其他选项吗?我不太了解脚本,担心我可能会遇到一些支持问题。

数据库:SQL Server 2008R2 标准版

有什么想法吗?非常感谢...

【问题讨论】:

  • 为什么不从 SSRS 在 Excel 中生成报告并将文件共享到文件夹?您可以使用 SSRS 订阅来执行此操作(不需要 SSIS)。使用 SSIS 处理 Excel 文件或以 SSRS 未提供的不同方式发送。
  • 我需要所有用户认可并接受的PDF格式
  • 另一种选择是在 SSIS 中设置一个标志,然后从 SQL 代理运行 SSRS。如果这听起来像是对您的解决方案,我可以让您获得更多信息!
  • 我还是不明白你为什么需要参与 SSIS?
  • 要查看 alejandro 建议的教程,试试这个:slideshare.net/KashikarR/…

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


【解决方案1】:

SSIS 在 SQL 代理中控制 SSRS 的运行。

这假定 SSIS 作业将更新控制记录或将一些其他可识别记录写入数据库。

1. 为报告创建订阅。
2. 运行此 SQL 以获取报表的 GUID

 SELECT  c.Name AS ReportName
  , rs.ScheduleID AS JOB_NAME
  , s.[Description]
  , s.LastStatus
  , s.LastRunTime
FROM 
  ReportServer..[Catalog] c 
  JOIN ReportServer..Subscriptions s ON c.ItemID = s.Report_OID 
  JOIN ReportServer..ReportSchedule rs ON c.ItemID = rs.ReportID
  AND rs.SubscriptionID = s.SubscriptionID<br>

3。创建 SQL 代理作业。

一种。步骤 1.

用于在包含标记记录的表中查找数据的 SQL 语句,其中高级设置为“失败结束作业报告成功”

IF NOT exists ( select top 1 * from mytable where mykey = 'x' 
and mycondition = 'y') RAISERROR ('No Records Found',16,1)

b.第 2 步

USE msdb 
EXEC sp_start_job @job_name = ‘1X2C91X5-8B86-4CDA-9G1B-112C4F6E450A'<br>

将 GUID 替换为从您的 GUID 查询返回的 GUID。

不过要注意的一件事......一旦执行了报告订阅,那么就 SQL 代理而言,即使报告不一定完成运行,该步骤也完成了。我曾经在执行步骤之后进行了清理工作,该工作在报告到达之前有效地删除了我的一些数据!

【讨论】:

    【解决方案2】:

    您可以为从未计划运行的报告创建订阅。

    如果您有订阅 ID,则可以使用 SSIS 中的简单 SQL 任务触发报告订阅。

    您可以从报表服务器数据库中获取订阅 ID。它位于订阅表中。 使用此查询来帮助定位订阅:

    选择目录.路径 ,目录.名称 ,订阅号 ,订阅.描述

    来自目录

    INNER JOIN 订阅 ON Catalog.ItemID = Subscriptions.Report_OID

    在 SSIS 中,您可以在 SQL 任务中使用此语句来触发订阅:

     EXEC reportserver.dbo.AddEvent @EventType='TimedSubscription',@EventData=  [Your Subscription ID]
    

    希望这会有所帮助。

    【讨论】:

    • 我的 SSRS 报告需要接受用户输入,我想比这更棘手。最后,我使用 SSIS Script Task 来调用 SSRS 报告。接下来将使用 SQL Server 代理对其进行调度以调用 SSIS 包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多