我是MSSQL和SSRS的新手。
我正在尝试在MSSQL 2008 Standard SSRS中创建一个数据驱动的订阅,它执行以下操作。
将报告结果通过电子邮件发送到报告中的电子邮件地址。 每日运行
例如:
Select full_name, email_address from users where (full_name = 'Mark Price')
这将使用email_address列找出要发送电子邮件的人,这也必须适用于多个电子邮件地址的多个结果。
我正在考虑这样做的方式是订阅运行查询,如果没有找到结果则没有任何反应。 但是,如果找到结果,则报告会更改“订阅”表中的行,以便在下一分钟左右再次运行报告,并在结果中找到正确的电子邮件信息。 这是一个愚蠢的想法吗?
我发现一些博客帖子声称这可行,但我无法理解他们的代码,知道它的作用。
那么,有关如何解决此问题的任何建议,或者您是否可以通过简短的描述在互联网上提出建议?
答案 0 :(得分:1)
这让我回到原来的工作,在我的SQL Server 2005 Enterprise开发框中使用数据驱动的订阅编写了一个问题的解决方案,然后让我感到沮丧的是我们的客户只有标准。
我当时给this post添加了书签,看起来很有希望,但在我有机会实施之前,我最终找到了工作。
当然,它的目标是2005年,但其中一条评论似乎表明它也适用于2008年。
答案 1 :(得分:1)
我在SQL Server Standard上实现了类似的功能,以避免为Enterprise付费。首先,我建立了一个名为“安排DDR”(数据驱动报告)的报告。该报告包含以下参数:
计划报告:在满足数据测试时要触发的SSRS报告(包括文件夹)的名称。例如。 “/会计/报表1”。
参数集:一个字符串,用于查找要在报告中使用的参数。例如。 “ABC”。
查询是否应运行报告:将返回单个值(零或非零)的SQL查询。零将被解释为“不运行此报告”
电子邮件收件人:将以分号分隔的电子邮件收件人列表(如果已运行)将收到该报告。
请注意,“安排DDR”报告是我们实际运行的报告,它会将输出发送给我;它的作用是运行另一个报告 - 在这种情况下它是“/ Accounting / Report1”,它是需要这些电子邮件地址的报告。所以“安排一个DDR”并不是一个真正的报告,虽然它的安排和运行就像一个 - 它是一个构建和运行报告的小工具。
我在SQL中也有一个表定义如下:
CREATE TABLE [dbo].[ParameterSet](
[ID] [varchar](50) NULL,
[ParameterName] [varchar](50) NULL,
[Value] [varchar](2000) NULL
) ON [PRIMARY]
每个参数集 - 在这种情况下为“ABC” - 在表格中有一组记录。在这种情况下,记录可能是ABC / placecode / AA和ABC / year / 2013,这意味着ABC中有两个参数:placecode和year,它们的值为“AA”和“2013”。
SSRS中“安排DDR”报告的数据集是
DDR.dbo.DDR3 @reportName, @parameterSet, @nonZeroQuery, @toEmail;
DDR3是一个存储过程:
CREATE PROCEDURE [dbo].[DDR3]
@reportName nvarchar(200),
@parameterSet nvarchar(200),
@nonZeroQuery nvarchar(2000),
@toEmail nvarchar(2000)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
select ddr.dbo.RunADDR(@reportName,@parameterSet,@nonZeroQuery,@toEmail) as DDRresult;
END
RunADDR是一个CLR。这是一个如何运作的概述;如果有人想要,我可以发布一些代码。
答案 2 :(得分:0)
我没有创建订阅来修改订阅表,而是将其放在其他地方,例如在SQL代理中。但这个想法是一样的。定期运行的SQL可以在订阅表中添加或更改行。
谷歌的“SSRS订阅表”返回了一些有用的结果:Here's an article基于2005年,但2008年的原则应该是相同的:This article是2008年的,并且非常接近你也在描述什么。
我只是在订阅表中逐个查看字段,并确定每个字段需要什么。尝试手动创建一行(手动插入语句)以发送订阅。
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以使用SQL-RD(第三方解决方案)来创建和运行数据驱动的计划,而无需升级到SQL企业。它还带有基于事件的调度(触发事件报告,包括数据库更改,文件更改,收到的电子邮件等)。