我为报告创建了一个数据驱动的订阅。订阅从 Oracle 数据库中的表中获取数据。(查询:从Mytable中选择*)我想要做的是按事件下标报告(已经按计划工作)。例如,当在 Oracle 中的表中插入新行时,这将触发订阅并生成新报告。我该如何处理?谢谢!
问问题
2002 次
1 回答
4
我可以想到几种方法。通过一些额外的数据库设计,您可以在表中为已插入但尚未报告的行设置一个标志。然后,您可以更改数据驱动的订阅查询以运行存储过程来查找标志、将行返回到订阅并更新表上的标志。然后,您将安排数据驱动订阅以适当的时间间隔触发 - 当表中没有插入任何行时,没有行返回到订阅,因此它不会触发。
如果您希望报表在每次插入时触发,那么另一种方法是在您的表上设置一个触发器,以便每次插入一行时,它将代码发送到 ReportServer 数据库,如下所示:
exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData='520580b3-bd4e-4221-9254-b220bc16ca55'
上面的代码是 SQL Server 如何在作业中触发订阅。您只需通过触发器直接调用作业。@EventData 中的 GUID 是您想要触发的 SubscriptionID。您必须查看 Subscription 表(在 ReportServer 数据库中)才能弄清楚。另外,如果您走这条路线,我建议您将数据驱动订阅设置为“一次性”计划。
于 2013-11-05T20:45:37.140 回答