Подтвердить что ты не робот

В 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.

Возможно, это связано с тем, что Хранимая процедура использует Dynamic SQL (обозначение N')?

По утрам в хранимой процедуре я:

SET @SQL + = N '   SELECT bi.SupplierID как '' ID поставщика ''           , bi.SupplierName как '' Имя поставщика ''

        ,bi.PID as ''PID''
        ,bi.RespondentID as ''Respondent ID''

        ,lk_slt.Name as ''Entry Link Type''

        ,ts.SurveyNumber as ''Initial Survey ID'''

enter image description here

4b9b3361

Ответ 1

Похоже, что SSRS имеет проблему (по крайней мере, в версии 2008) - я изучаю этот веб-сайт, который объясняет это

Где он говорит, если у вас есть два столбца (из двух таблиц разностей) с тем же именем, это вызовет эту проблему.

Из источника:

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

SQL обрабатывал его просто отлично, так как я имел префикс с псевдонимом (таблица). Но SSRS использует только имя столбца в качестве ключа, а не таблицы +, поэтому он задыхался.

Исправление было простым, либо переименовать второй столбец, т.е. b.Field1 AS Field01 или просто опустить поле вместе, что я и сделал.

Ответ 2

У меня есть опыт в прошлом. Исходя из этого, я могу сказать, что в целом мы получаем эту проблему, если ваш набор данных имеет несколько полей, которые указывают на тот же источник поля. Взгляните на следующие сообщения для описания подробных ошибок

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, и убедиться, что все поля имеют уникальное имя.

Ответ 3

Я сталкиваюсь с той же проблемой. После отладки я исправил то же самое. если имя столбца в вашем запросе sql имеет несколько раз, то эта проблема возникает. Следовательно, используйте псевдоним в SQL-запросе, чтобы отличать имя столбца. Пример: Приведенный ниже запрос будет правильно работать в SQL-запросе, но создаст проблему в отчете SSRS:

Выберите P.ID, P.FirstName, P.LastName, D.ID, D.City, D.Area, D.Address Из PersonalDetails P Соединение слева СоединениеDetails D On P.ID = D.PersonalDetailsID

Причина: идентификатор упоминался дважды (несколько раз)

Правильный запрос:

Выберите P.ID как PersonalDetailsID, P.FirstName, P.LastName, D.ID, D.City, D.Area, D.Address Из PersonalDetails P Соединение оставлено СоединениеDetails D On P.ID = D.PersonalDetailsID

Ответ 4

У меня была такая же ошибка в запросе отчета. У меня были столбцы из разных таблиц с одинаковым именем и префиксом для каждой таблицы (например, выберите a.description, b.description, c.description), которая работает нормально в Oracle, но для отчета вы должны иметь уникальный псевдоним для каждой таблицы. столбец, поэтому просто добавьте псевдоним в поля с тем же именем (выберите a.description a_description, b.description b_description и т.д.)

Ответ 5

Я только что получил эту ошибку, и я узнал, что речь идет о псевдониме локальной переменной

в конце хранимой процедуры мне понравилось

select @localvariable1,@localvariable2

он отлично работал в sql, но когда я запускал это в ssrs это всегда была ошибка, но после того, как я дал псевдоним, он исправлен.

select @localvariable1 as A,@localvariable2 as B

Ответ 6

Извините, это ответ старой ветке, но он все еще может быть полезен.

В дополнение к вышеупомянутым ответам, Обычно это происходит, когда два столбца с одинаковыми именами, даже из разных таблиц, включены в один и тот же запрос. например, если мы объединяем две таблицы город и штат, где таблицы имеют имя столбца например название города и штата. когда такой запрос добавляется к набору данных, ssrs удаляет имя таблицы или псевдоним таблицы и сохраняет только имя, которое в итоге дважды появляется в запросе и выдает ошибки как дубликат ключа. Лучший способ избежать этого - использовать псевдоним, например, вызывая имена столбцов. city.name как c_name state.name как s_name. Это решит проблему.