从SSIS执行SSRS报告

时间:2015-10-21 23:22:38

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

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

在这里看到一个解决方案:

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

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

数据库:SQL Server 2008R2标准版

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

2 个答案:

答案 0 :(得分:1)

SSIS控制SQL Agent中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语句,用于在包含标记记录的表中查找数据,其中高级设置为&#34;关于失败结束作业报告成功&#34;

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

湾第2步

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

使用GUID查询返回的GUID替换GUID。

有一点需要注意......一旦报告订阅已经执行,那么就SQL Agent而言,即使报告未必完成运行,该步骤也已完成。我曾经在Exec步骤之后完成了一项清理工作,它在报告到达之前有效地删除了我的一些数据!

答案 1 :(得分:0)

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

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

您可以从Report Server数据库获取订阅ID。它位于Subscriptions表中。 使用此查询可帮助找到订阅:

SELECT Catalog.Path       ,Catalog.Name       ,SubscriptionID       ,Subscriptions.Description

FROM Catalog

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

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

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

希望这有帮助。