为什么SSRS 2005中的数据驱动订阅不像我的存储过程?

时间:2010-03-16 17:15:08

标签: sql-server-2005 reporting-services

我正在尝试为SSRS 2005中的报告定义数据驱动订阅。

在设置的第3步中,您被要求:

“返回收件人列表的命令或查询,并可选择返回用于改变每个收件人的递送设置和报告参数值的字段”

这是我写的,它可以毫不费力地返回数据。我按下一步,然后滚动到设置中的下一个屏幕,该屏幕包含为DDS设置的所有变量,并且在每种情况下都有一个“从数据库中选择值”选项

我选择此单选按钮并按下拉。没有字段可供我使用。

现在我可以改变SP返回的参数数量的唯一方法是让SP将SQL写入nvarchar变量,然后最后将变量作为sql执行。我在Management Studio中对此进行了测试,并返回了预期的字段。我甚至将它们命名为SSRS中的字段,但事情不会将字段名称放入下拉列表中。

我甚至将查询主体从存储过程中取出,在SSRS中验证它然后尝试了。它也不起作用。

任何人都能说清楚我做错了吗?

1 个答案:

答案 0 :(得分:4)

您可能需要使用以下内容启动存储过程:

CREATE PROCEDURE [GetRecipients]
AS

SET NOCOUNT ON
If 1=0
BEGIN
Select CAST(NULL as nvarchar(50)) as RecipientEmail,
CAST(NULL as integer) as  Param1, 
CAST(NULL as nvarchar(10)) as Param2,
CAST(NULL as DATETIME) as Param3
END

...在此处插入您的代码......

End;  

这是我在SSIS中用作临时表的数据源所需的过程。由于If contstruct,从不运行具有最终输出格式的顶部选择,但它允许SSIS(可能还有SSRS)查看并导出输出的元数据。我相信这是由于SSIS和SSRS在您的代码中寻找第一个选择来尝试派生元数据。

相关问题