问题描述
||
我正在开发SSRS 2008报告,但是我不想使用存储过程,而是要使用所有Text查询。该报告正在使用存储过程,但是当我通过文本查询将该报告更改为使用相同的逻辑时,出现以下错误:
本地报告处理期间发生错误
数据集“ BRSR_Totals”的查询执行失败
变量名\'@ END_yEAR \'已被声明。变量名称在查询批处理或存储过程中必须唯一。
操作被用户取消。
问题是我的某些数据集(文本查询)重复使用了相同的参数,而END_YEAR是这些参数之一。如何使此报告正确运行?
解决方法
您可能要检查的一个区域是区分大小写。考虑参数名称时,SSRS区分大小写,但是T-SQL不区分大小写。再看一下您的代码,并确保所有参数都使用相同的大小写。
, 我刚刚使用文本查询填充数据集解决了类似的问题。
(为回应有关将逻辑卸载到存储过程中的建议:在这种情况下,该报告是针对单个客户的自定义报告。该查询将仅在此报告中使用,并对该假设做出一些假设客户的配置(全球不应该使用)
尝试执行查询时收到相同的错误。它在SQL Server Management Studio中工作,并且在BIDS中的查询设计器中工作,但是在运行时失败。
事实证明,此问题是BIDS有助于向该查询所引用的数据集添加参数。切换到“数据集属性”的“参数”选项卡,显示BIDS复制了我之前已经添加的参数。删除骗子解决了我的问题。
, 我也只是在其中一个查询中解决了同一问题。我正在使用文本查询,并且具有日期时间变量/参数。 SSRS将第二组添加到数据集属性的参数中。我删除了它们,然后查询运行良好,并填充了我的图形。
, 我在报告中遇到了类似的问题,该报告在开始时就声明了我不希望最终用户看到的大量参数。我遇到的问题是,在该行的开头使用逗号,所以我有:
宣告@Parameter VARCHAR(4)= \'text \'
,@Parameter VARCHAR(4)= \'text2 \'
它在SSMS中工作得很好,但是当我在Report Builder 3.0中运行它时,它抛出了此线程中显示的错误。我对其进行了更改,以删除逗号并在每行的开头重新声明DECLARE,并且效果很好。
, 检查您是否没有两次声明它,一次是在您要创建的CREATE PROC语句中,另一次是在实际代码中的声明...在测试对SP代码的更改时,我已经看到了此问题。