74

次のエラーが発生しますSSRS

クエリデザインメソッドの保存中にエラーが発生しました。
同じキーのアイテムはすでに追加されています

しかし、「アイテム」は何を意味しますか?を編集してRDL、使用する必要のあるストアドプロシージャへのすべての参照を削除してみましたprc_RPT_Select_BI_Completes_Data_View

これは、ストアドプロシージャが動的SQL(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'''

ここに画像の説明を入力してください

4

9 に答える 9

144

SSRSに問題があるようです(少なくともバージョン2008では)-私はそれを説明するこのウェブサイトを研究しています

同じ名前の2つの列(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は、テーブル+列ではなく、列名のみをキーとして使用するため、窒息していました。

修正は簡単で、2番目の列の名前をiebField1 AS Field01に変更するか、フィールドをすべて一緒に省略しました。これは私が行ったことです。

于 2013-01-22T20:49:19.433 に答える
7

私は過去にこの問題を経験しました。これに基づいて、データセットに同じフィールドソースを指す複数のフィールド名がある場合、一般的にこの問題が発生すると言えます。エラーの詳細については、次の投稿をご覧ください

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によって返されるすべてのフィールド名をチェックし、すべてのフィールドに一意の名前があることを確認する必要があります。

于 2013-01-23T07:51:21.183 に答える
6

私は同じ問題に直面しています。デバッグ後、私は同じことを修正しました。SQLクエリの列名に複数回ある場合、この問題が発生します。したがって、SQLクエリでエイリアスを使用して、列名を変更します。例:以下のクエリはSQLクエリでは適切に機能しますが、SSRSレポートで問題が発生します。

Select P.ID, P.FirstName, P.LastName, D.ID, D.City, D.Area, D.Address
From PersonalDetails P
Left Join CommunicationDetails D On P.ID = D.PersonalDetailsID

理由:IDが2回言及しました(複数回)

正しいクエリ:

Select P.ID As PersonalDetailsID, P.FirstName, P.LastName, D.ID, D.City, D.Area, D.Address
From PersonalDetails P
Left Join CommunicationDetails D On P.ID = D.PersonalDetailsID
于 2018-04-20T06:36:59.430 に答える
5

レポートクエリでも同じエラーが発生しました。Oracleで正常に実行される、同じ名前と各テーブルのプレフィックス(たとえば、select a.description、b.description、c.description)を持つ異なるテーブルの列がありましたが、レポートには、それぞれに一意のエイリアスが必要です。列なので、同じ名前のフィールドにエイリアスを追加するだけです(a.description a_description、b.description b_descriptionなどを選択します)

于 2018-08-09T17:37:03.533 に答える
3

申し訳ありませんが、これは古いスレッドへの応答ですが、それでも役立つ可能性があります。

上記の応答に加えて、これは通常、異なるテーブルからの同じ名前の2つの列が同じクエリに含まれている場合に発生します。たとえば、2つのテーブルcityとstateを結合すると、テーブルの列名はcity.nameとstate.nameのようになります。このようなクエリがデータセットに追加されると、SSRSはテーブル名またはテーブルエイリアスを削除し、名前のみを保持します。これは、最終的にクエリに2回表示され、重複キーとしてエラーが発生します。これを回避する最善の方法は、列名city.nameをc_name、state.nameをs_nameとして呼び出すなどのエイリアスを使用することです。これで問題は解決します。

于 2019-10-04T01:05:49.833 に答える
2

vs2015エンタープライズ、ssdt 14.1.xxx、ssrsでこのエラーメッセージが表示されました。私にとっては、2列の同じ名前の問題で、上記とは異なるものだったと思います。このレポートを追加してからレポートを削除し、ssrsウィザードでクエリを追加し直そうとすると、「クエリデザインメソッドの保存中にエラーが発生しました:無効なオブジェクト名:テーブル名」というメッセージが表示されました。ここで、tablenameは、ウィザードが読み取っていたクエリのテーブルです。プロジェクトをクリーンアップして、プロジェクトを再構築してみました。私の意見では、レポートを削除してもMicrosoftはレポートのクリーンアップを完了しておらず、元のクエリを追加し直そうとすると追加されません。私がそれを修正することができた方法は、まったく新しいプロジェクトでssrsレポートを作成し(明らかにクエリに問題はありません)、それを脇に保存することでした。次に、元のssrsプロジェクトを再度開き、[レポート]、[追加]、[既存のアイテムの追加]の順にクリックしました。レポートは、名前の競合なしで問題なく追加されました。

于 2020-06-03T23:48:04.617 に答える
1

このエラーが発生し、ローカル変数のエイリアスに関するものであることがわかりました

ストアドプロシージャの最後に私は好きでした

select @localvariable1,@localvariable2

SQLでは正常に動作していましたが、これをssrsで実行すると、常にエラーがスローされていましたが、エイリアスを指定した後は修正されました

select @localvariable1 as A,@localvariable2 as B
于 2017-06-06T14:55:58.423 に答える
1

SSRSは重複する列を受け入れないため、クエリまたはストアドプロシージャが一意の列名を返すようにしてください。

于 2020-07-19T09:23:34.020 に答える
-1

SPを使用していて、spに複数のSelectステートメントがある場合(if条件内)、それらすべての選択は一意のフィールド名で処理する必要があります。

于 2020-07-17T10:48:04.737 に答える