2012-11-30 3 views
3

내 SSRS 보고서에 250+ uniqueidentifier 데이터 형식 값이 포함 된 다중 값 매개 변수가 있습니다. 이 매개 변수의 드롭 다운에서 값의 작은 선택으로 잘 작동하지만 사용자가 (모두 선택) 선택할 때, 그들은이 오류를 얻을 : 각각의 고유 식별자 필드는 36 자입니다다중 값 매개 변수 잘라 내기

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

, 그 중 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) 
+2

이것은 내 가장 거친 증서입니다. 나는 귀하의 닉네임 때문에 질문을 upvoted –

+0

보고서에서 "모두"를 선택하거나 쿼리에서 문제가 발생하면 오류가 발생합니까? –

+0

검색어를 어떻게 표시 할 수 있습니까? 혹시'nvarchar (xxx)'(xxx <9000)를 사용하여 저장 프로 시저를 호출할까요?또한 SQL 프로파일 러를 사용하여 실행중인 쿼리를 빼내고 수동으로 실행하려고 할 수 있습니다. – Jeroen

답변

1

SSRS에는 다중 값 매개 변수의 크기 제한이 있습니다. 나는 그것이 내 머리 꼭대기에서 벗어난 것을 기억할 수는 없지만, 당신이 그것을 넘어서 있다고 생각합니다. (SSRS는 쉼표로 구분 된 문자열로 다중 값 매개 변수를 변환하고 문자열로 쿼리에 변수 이름의 차례 나오는 대체합니다.)

코멘트에서 언급 한 바와 같이 그래서, 당신이있어 두 가지 문제 :

  1. SP는 SSRS에서 직접 다중 값 매개 변수를 가져올 수 없습니다. 몇 가지 조작을해야합니다.
  2. 전체 매개 변수 길이. 이를 해결하기 위해서는 약간의 독창성이 필요할 수 있습니다. 일부 옵션은 :

    • 은 별도의 매개 변수 또는 <All Users>에 대한 기존의 매개 변수에 특별한 가치와 그 경우 모든 값을 반환하는 SP에서이 검사 중 하나를 제공 할 수 있습니다. 쿼리가이 같은 일 것 (A SP는 대신) SSRS에 직접 경우 :

      ...WHERE (U.UserId in (@UserIds) OR '<All Users>' in (@UserIds)) 
      ... 
      
    • 당신은 당신의 매개 변수의 항목 수를 필터링 할 수 있습니다, 이전 매개 변수를 기반으로? 예를 들어 사용자가 날짜 범위 및/또는 부서를 선택하고 해당 범위와 일치하는 UID 만 반환합니까?
0

또 다른 방법은 사용자 정의 테이블 형식을 만드는 것입니다 선택한 값을 전달하려면 varchar 대신 해당 값을 사용하십시오.