SSRS文本查询:变量名在查询批处理或存储过程中必须是唯一的

时间:2011-05-31 15:08:34

标签: sql reporting-services ssrs-2008

我正在开发SSRS 2008报告,但我想使用所有Text查询而不是使用存储过程。此报告正在使用存储过程,但是当我将此报告更改为使用相同的逻辑但通过文本查询时,我收到以下错误:

本地报告处理期间发生错误 数据集“BRSR_Totals”的查询执行失败 变量名'@END_yEAR'已经声明。变量名在查询批处理或存储过程中必须是唯一的。 操作被用户取消。

问题是我的一些数据集(文本查询)重用了相同的参数,END_YEAR是这些参数之一。如何正确运行此报告?

5 个答案:

答案 0 :(得分:6)

您可能想要检查的一个区域是区分大小写。在考虑参数名称时,SSRS区分大小写,但T-SQL没有区分大小写。再看看你的代码,确保所有参数都使用相同的情况。

答案 1 :(得分:2)

我刚刚使用文本查询解决了类似问题,以填充数据集。

(回应关于将逻辑卸载到存储过程中的建议:在这种情况下,报告是单个客户的自定义报告。查询将仅在此报告中使用并生成一些关于客户配置的假设,不应在全球范围内提供)

尝试执行查询时收到了同样的错误。它在SQL Server Management Studio中工作,它在BIDS中的查询设计器中工作,但在运行时失败。 问题结果是BIDS有助于向此查询引用的数据集添加参数。切换到“数据集属性”的“参数”选项卡显示BIDS已复制我之前添加的参数。删除欺骗行为解决了我的问题。

答案 2 :(得分:1)

我也在我的一个查询中解决了同样的问题。我正在使用文本查询并具有日期时间变量/参数。 SSRS在数据集属性的参数中添加了第二组。我删除了它们,之后我的查询运行正常并填充了我的图表。

答案 3 :(得分:0)

我在报告中遇到了类似的问题,我在开始时声明了大量参数,我不希望最终用户看到。我遇到的问题是我在行的开头使用逗号,所以我有: DECLARE @Parameter VARCHAR(4)=' text' ,@ Parameter VARCHAR(4)=' text2' 它在SSMS中运行得很好,但是当我在Report Builder 3.0中运行它时,它会抛出此线程中显示的错误。我更改了它以删除逗号并在每行的开头重新声明DECLARE并且它运行良好。

答案 4 :(得分:0)

检查你没有声明两次,一次是在你正在创建的CREATE PROC语句中,另一次在实际代码中...我在测试SP代码的更改时看到了这个问题。