2014-12-10 2 views
2

반환해야하는 열 중 하나가 Active Directory의 값인 데이터 묶음을 반환하는 SSRS 보고서를 만듭니다. Active Directory에서 값을 조회하는 하위 쿼리에 전달할 값을 가져 오는 쿼리가 있습니다.SQL Server OpenQuery - 기본 SELECT 쿼리에서 하위 쿼리로 매개 변수 결과 전달

DECLARE @UserID int 
SELECT @UserID = UserID FROM dbo.Users As TEST WHERE (RecordID = 123456) 

(SELECT displayName FROM OpenQuery (
ADSI, 
    'SELECT displayName 
    FROM ''LDAP://DC=company,DC=local'' 
    WHERE objectCategory=''user'' AND extensionattribute5='' [email protected]+ '' 
    ')) AS LoggedBy 

FROM dbo.UserRecords WHERE UserID = 1 

문제는 내가 서브 쿼리에 @UserID를 사용할 때 출력 별칭 "LoggedBy는"항상 "널"를 반환하지만입니다 : 내가 가진 무엇

지금까지이 같은 (간체)를 보인다. 매개 변수를 꺼내 수동으로 매개 변수의 값을 입력하면 올바르게 작동합니다.

메인 쿼리에서 @UserID 매개 변수를 하위 쿼리로 가져올 수없는 것 같습니다. 궁금해, 내가 뭘 놓치고 있니?

답변

1

이 방법으로 OpenQuery 컨텍스트에 변수를 보낼 수 없습니다. "외부"쿼리를 필터링보십시오 :

DECLARE @UserID int 
SELECT @UserID = UserID FROM dbo.Users As TEST WHERE (RecordID = 123456) 

(SELECT t.displayName FROM OpenQuery (
ADSI, 
    'SELECT displayName, extensionattribute5 
    FROM ''LDAP://DC=company,DC=local'' 
    WHERE objectCategory=''user'' 
    ') as t 
WHERE [email protected]) AS LoggedBy 


FROM dbo.UserRecords WHERE UserID = 1 

OPENQUERY

MSDN에서 변수를 인수로 받아들이지 않습니다.

+0

아, OPENQuery가 변수를 지원하지 않는다는 것을 깨달았습니다. 내게이 빛을 보여 주셔서 고마워요 :) – Livewire