我正在尝试为SSRS 2005中的报告定义数据驱动订阅。
在设置的第3步中,您被要求:
“返回收件人列表的命令或查询,并可选择返回用于改变每个收件人的递送设置和报告参数值的字段”
这是我写的,它可以毫不费力地返回数据。我按下一步,然后滚动到设置中的下一个屏幕,该屏幕包含为DDS设置的所有变量,并且在每种情况下都有一个“从数据库中选择值”选项
我选择此单选按钮并按下拉。没有字段可供我使用。
现在我可以改变SP返回的参数数量的唯一方法是让SP将SQL写入nvarchar变量,然后最后将变量作为sql执行。我在Management Studio中对此进行了测试,并返回了预期的字段。我甚至将它们命名为SSRS中的字段,但事情不会将字段名称放入下拉列表中。
我甚至将查询主体从存储过程中取出,在SSRS中验证它然后尝试了。它也不起作用。
任何人都能说清楚我做错了吗?
答案 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在您的代码中寻找第一个选择来尝试派生元数据。