【问题标题】:Trigger a report based entry of data触发基于报告的数据输入
【发布时间】:2015-09-09 08:03:05
【问题描述】:

我正在使用MS SQL Server 2008R2 标准版。我正在寻找基于某个表的最终值的最终条目来触发报告。该报告是使用SQL Server Business Intelligence Development studio 设计的。

是否可以在不使用数据驱动订阅的情况下做到这一点。数据驱动订阅是MS SQL Server 2008R2 标准版中缺少的一项功能。

我有一个部分解决方案

CREATE TRIGGER tr_Report_INSERT_PHASE_PROC

ON [database].[dbo].[table] 
AFTER INSERT 
AS 
IF EXISTS (SELECT * FROM [database].[dbo].[table] where process_value = 'End Of BATCH' )
BEGIN 

    EXEC ReportServer.dbo.AddEvent @EventType='TimedSubscription',

    @EventData='xxxx' -- SubscriptionID from Report Manager URL 
END 
go

但这会在每次插入时触发,并且我的表具有历史 process_value = 'End of Batch'。所以我需要在我的条件中添加一个 AND if serial_no = inserted serial_no。

如何找到插入的序列号的值?

【问题讨论】:

  • 你是如何在表格中输入数据的?
  • @AnupAgrawal 数据正在通过 VBA 以我无法控制的格式输入。

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


【解决方案1】:

我会在名为“已处理”的表中添加一个位列。然后将程序更新为:

CREATE TRIGGER tr_Report_INSERT_PHASE_PROC
ON [database].[dbo].[table] 
AFTER INSERT 
AS 
IF EXISTS (
           SELECT * 
           FROM [database].[dbo].[table] 
           WHERE process_value = 'End Of BATCH' 
                AND processed = 0 -- Only process if there is an unprocessed record
          )
BEGIN 

    EXEC ReportServer.dbo.AddEvent @EventType='TimedSubscription',
    @EventData='xxxx' -- SubscriptionID from Report Manager URL 

    -- Mark record as processed
    UPDATE [database].[dbo].[table] 
    SET processed = 1 
    WHERE process_value = 'End Of BATCH' 
         AND processed = 0

END 
go

【讨论】:

  • 这可能行得通,但我必须看看是否可以将列添加到表中,因为我无法控制数据库结构,只能控制报告服务。
  • 表中有自增的PK吗?如果是这样,您可以将 SELECT 查询的 WHERE 子句更新为: WHERE process_value = 'End Of BATCH' AND (SELECT MAX([primary_key]) FROM [table]) = [primary_key]
  • 我现在几乎可以使用您的查询来提供要做什么的草图。我必须添加一个处理过的表而不是一行。我还必须在 exec 和 update 之间等待 10 秒的延迟。该报告查找最后一个未处理的批次。毫不拖延地,在报告发布之前记录已被标记处理。有什么办法可以解决这个问题,或者至少可以在一定程度上减少这种延迟?
  • 您可以更改报告以查找最后处理的批次吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多