在SSRS中,当我正在做一个新的报告时,为什么我会收到错误“已经添加了同一个键的项目”?

我在SSRS遇到以下错误,现在一直令我困惑:

 An error occurred while the query design method was being saved. An item with the same key has already been added 

但是,“项目”表示什么? 我什至尝试编辑的RDL和删除所有引用我需要使用称为prc_RPT_Select_BI_Completes_Data_View的存储过程。

这可能是因为存储过程使用dynamicSQL( N'符号)这个事实吗?

在清晨,在存储过程中我有:

SET @SQL + = N'SELECT bi.SupplierID as''Supplier ID'',bi.SupplierName as''Supplier Name''

  ,bi.PID as ''PID'' ,bi.RespondentID as ''Respondent ID'' ,lk_slt.Name as ''Entry Link Type'' ,ts.SurveyNumber as ''Initial Survey ID''' 

在这里输入图像说明

看来SSRS有一个问题(至less在2008版) – 我正在研究这个网站,解释它

在哪里说,如果你有两列(从2差异表)具有相同的名称,那么会导致这个问题。

来源:

SELECT a.Field1,a.Field2,a.Field3,b.Field1,b.field99 FROM TableA a JOIN TableB b on a.Field1 = b.Field1

SQL处理它就好了,因为我已经用别名(表)名称作为前缀。 但是,SSRS只使用列名作为键,而不是表+列,所以这是窒息。

修复很简单,可以重命名第二列iebField1 AS Field01,或者只是一起省略这个字段,这就是我所做的。

我过去经历过这个问题。 基于这一点,我可以说,如果你的数据集有多个指向相同字段源的字段名,我们通常会遇到这个问题。 看看下面的post,详细的错误描述

http://www.bi-rootdata.com/2012/09/an-error-occurred-during-report.html

http://www.bi-rootdata.com/2012/09/an-item-with-same-key-has-already-been.html

在你的情况下,你应该检查由sp prc_RPT_Select_BI_Completes_Data_View返回的所有字段名称,并确保所有字段都有唯一的名称。

我刚刚得到这个错误,我才知道这是关于本地variables别名

在存储过程结束时,我喜欢

 select @localvariable1,@localvariable2 

它在sql中工作正常,但是当我在ssrs中运行它时总是抛出错误,但是在给别名之后,它被修复了

 select @localvariable1 as A,@localvariable2 as B