像数据驱动订阅SSRS标准版2008

时间:2016-10-06 13:23:18

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

我是MSSQL和SSRS的新手。

我正在尝试在MSSQL 2008 Standard SSRS中创建一个数据驱动的订阅,它执行以下操作: 我需要向我的用户发送/发送包含报告的电子邮件,以防报告中包含数据。这将使用收件人列表,并且必须适用于多个电子邮件地址的多个结果。

我想这样做的方法是根据查询结果进行订阅。如果查询没有返回任何结果,那么电子邮件就不会消失。但如果找到结果,则会发送带有报告的电子邮件。

有关如何做到这一点的任何建议,或者您是否可以在互联网上提出已有描述的内容?

同样在下面的链接中我发现了类似于我需要的内容,但是我在编写RunADDR时遇到了困难。任何帮助是极大的赞赏。 Mike Christie解决方案: Data Driven Subscriptions SSRS Standard Edition 2008

2 个答案:

答案 0 :(得分:0)

您可以创建执行常规订阅的sql代理作业。 查找订阅ID并在SQL代理作业中写入查询

return
    DbContext.Schemes
            .Join(
                DbContext.SchemeColours,
                s => s.SchemeID,
                sc => sc.SchemeID,
                (s, sc) => new
                    {
                        s.SchemeID,
                        s.Label,
                        sc.Colour,
                        sc.Result,
                        sc.ColourID
                    })
            // After joining you group by SchemeID, in this way you have 
            // for each SchemeID the group of related items
            .GroupBy(a => a.SchemeID)
            // You then create your result, starting from the main object
            .Select(g =>
                    new Overlay.ReportColourScheme
                        {
                            ID = g.Key,
                            // I suppose you have at least a child for each SchemeID, 
                            // otherwise you can check if the list is empty
                            Label = g.FirstOrDefault().Label,
                            // For each group you create a list of child object
                            Colours = g.Select(v => new Overlay.ReportColour
                                        {
                                            ID = v.ColourID,
                                            Value = v.Colour,
                                            Result = v.Result
                                        }).ToList()
                        })
            .ToArray();

如果表中存在if存在的数据,则会发送非数据驱动的订阅,而不是没有数据。

答案 1 :(得分:0)

您可以使用数据驱动订阅来执行您想要的操作。数据驱动的查询类似于:

IF EXISTS (<your report dataset>)
    SELECT 'recipient emails' as ToAddress
    FROM MyEmailList
ELSE
    SELECT 'no one' as ToAddress

然后在电子邮件设置中为“TO:”地址选择此列。当然,您可以添加多个电子邮件和任何其他参数。