3

私の SSRS レポートには、250 以上の uniqueidentifier データ型の値を含む多値パラメーターがあります。これは、パラメーター ドロップダウンで値を少し選択すると問題なく動作しますが、ユーザーが (すべて選択) を選択すると、次のエラーが発生します。

An error occurred during local report processing.
String or binary data would be truncated. 

各 uniqueidentifier フィールドの長さは 36 文字です。つまり、250 個を合計すると 9000 文字の文字列になります。これが、切り捨てが発生する原因です。

この状況に対処するには、どのようなアプローチを取る必要がありますか?

編集:

ストアド プロシージャのスナップショットを結合します。

ALTER PROCEDURE [dbo].[spReport]
     @StartDate as datetime
    ,@EndDate as datetime
    ,@LocationId uniqueidentifier
    ,@UserIds uniqueidentifier

@UserIds は複数値パラメーターです。クエリの where 句で使用されます。

WHERE (U.UserId IN (@UserIds) OR @UserIds IS NULL)
4

3 に答える 3

1

このようなストアドプロシージャでSSRS複数値パラメータを使用することはできません。レポートの値を結合し、varchar(max)として渡してから、ストアドプロシージャで分割する必要があります:
https
://stackoverflow.com/a/9862901/124386 http://www.codeulike .com / 2012/03 / ssrs-multi-value-parameters-with-less.html

于 2012-12-06T12:41:30.643 に答える
1

SSRS には、多値パラメーターのサイズに制限があります。頭のてっぺんに何があったのか覚えていませんが、あなたはそれをはるかに超えていると思います。(SSRS は、複数値パラメーターをコンマ区切りの文字列に変換し、クエリ内の変数名の出現箇所を文字列に置き換えます。)

コメントで述べたように、2 つの問題があります。

  1. SP は、SSRS から直接多値パラメーターを取得できません。いくつかの操作を行う必要があります。
  2. パラメータ全体の長さ。これを解決するには、少しの創造性が必要になる場合があります。いくつかのオプション:

    • 別のパラメーターまたは既存のパラメーターに特別な値を指定し<All Users>て、SP でこれをチェックし、その場合はすべての値を返すことができますか。クエリが (SP ではなく) SSRS に直接ある場合、次のようなものが機能します。

      ...WHERE ( U.UserId in ( @UserIds) OR '<All Users>' in ( @UserIds ) )
      ...
      
    • 以前のパラメータに基づいて、パラメータ内のアイテム数をフィルタリングできますか? ユーザーに日付範囲や部門を選択させ、その範囲に一致する UID のみを返すようにしますか?
于 2012-11-30T17:28:28.570 に答える
0

もう 1 つの方法は、ユーザー定義のテーブル タイプを作成し、それを varchar の代わりに使用して、選択した値を渡すことです。

于 2014-09-30T21:43:19.330 に答える