2012-10-30 2 views
0

나는 그 안에 많은 고객이있는 데이터베이스를 가지고 있습니다. 표의 각 행에는 데이터가 속한 고객을 나타내는 고객 ID가 있습니다.SSRS 및 공유 고객 데이터베이스를 사용한 특별보고

최종 사용자가 Ad-Hoc 보고서를 사용하여 보고서를 작성할 수는 있지만 고객 ID와 관련된 데이터 만 볼 수 있습니까?

답변

1

보고서에서 기본 제공 필드 UserID를 사용하여 현재 사용자의 도메인 이름을 반환 할 수 있습니다. MYDOMAIN \ 사용자 이름. 당신이 도메인 이름에 테이블 매핑 고객 ID를 만들고 기본 데이터 테이블이 가입 할 수있는 경우

다음은 보고서에서 데이터 집합 쿼리와 같은

WHERE MappingTable.DomainUsername = @CurrentUser 

에 where 절을 추가 할 수 있습니다하는을 만들 숨겨진 매개 변수를 CurrentUser로 설정하고 값을 전역으로 설정하십시오! UserID.Value

이 솔루션이 작동하려면 보고서 사용자 자격 증명이 데이터 소스로 전달되는 보고서 데이터 원본에서 Windows 인증을 사용해야합니다 .


편집 : 나는 그것을 데이터의 자신의보기를 제한하는 동안 사용자가 임시 보고서를 만들 수 있도록 가능하다면 실제로 요구 된 원래의 질문을 오해 참조하십시오. 이 시나리오는 사용자가 자체 보고서를 디자인 할 것이므로 보고서 자체에 구현 된 솔루션을 배제합니다. 대신 원본 데이터베이스에 보안 계층의 일부 형식 (예 :보기)을 구현해야합니다. 사용자가 도메인 로그인을 사용하는 경우 위와 유사한 접근 방식을 사용할 수 있습니다. 예를 들어, 특정 사용자에 대한 데이터를 제한하기 위해 SUSER_NAME()에 대한 참조가 뷰에 포함될 수 있습니다.

+0

데이터가 '고객'이고 도메인의 일부가 아닌 경우이 동일한 개념을 사용할 수 있습니다. 보고서 매개 변수를 프롬프트로 만들거나 보고서 사용자가 필터링 할 'CustomerId'를 입력하도록 요청하고 위와 같이 쿼리의 WHERE 절에 매개 변수를 지정합니다. –

+1

상기 내용에 동의하지만이 접근법은 고객이 실수로 (의도적으로 또는 의도적으로) 자신의 ID가 아닌 ID를 입력하고 보지 않아야하는 데이터에 액세스 할 수 있음을 알고 있습니다. – Nathan

+0

좋은 지적. 고객이 도메인 외부에 있다면 보고서에 도달하기 전에 인증 할 방법이 필요합니다. 어떤 메커니즘을 사용하든 결과를 필터링하는 데 사용할 수 있습니다. 폼 인증이 사용되고 세션 상태가 테이블에 저장되어 있다면 이것은 보통 사용자 아이디와 연관되어 있습니다.이 경우이 사용자 아이디는 'INNER JOIN'에서 사용할 수 있습니다. 현재 세션의 사용자 –

관련 문제