2016-09-28 5 views
0

연결된 서버에 가입하면 일관성없는 결과가 나타납니다. 그것은 비교적 단순해야만하는 것이지만 ...이 사실을 이해하기까지 수 시간이 걸렸습니다. SQL Server 2014 및 CData ODBC 드라이버를 사용하여 SalesForce에 연결합니다. 난 그냥 표준 CRUD 작업을 수행하는 노력하고있어 아무것도하지 않을거야하지만 때로는 때로는 내가 결과를 생산하지 않는 이러한 연결된 서버 테이블을 필터링 할 때 다시 보인다.SQL Server to SalesForce 연결된 서버의 악몽

내 현재 및 주요 문제는 두 개의 연결된 테이블을 두 개의 로컬 테이블에 조인하는 데 어려움이 있습니다. 조인 결과에서 링크 된 테이블 중 하나를 제거하면 결과가 생성됩니다. 그러나 조인에 두 개의 연결된 테이블을 추가 할 때마다 빈 레코드 세트가 만들어집니다.

예, 모든 관련 식별자가 있으므로 링크 된 서버의 문제입니다.

SELECT * FROM Offer_Interest oi 
INNER JOIN Offer o ON oi.Offer_ID_SQL = o.Offer_ID_SQL 
INNER JOIN OPENQUERY([TR-SF-PROD], 'SELECT Id, OFFER_ID_SQL__C FROM Offer__c') osf ON o.Offer_ID_SQL =osf.OFFER_ID_SQL__C 
INNER JOIN Interest i ON oi.Interest_ID_SQL = i.Interest_ID_SQL 
INNER JOIN OPENQUERY([TR-SF-PROD], 'SELECT INTEREST_ID_SQL__C, Id FROM Interest__c') isf ON i.Interest_ID_SQL =isf.Interest_ID_SQL__c 
WHERE o.PrimaryContact_ID_SQL = 2803 

나는 또한 OPENQUERY없이 시도했다 : : 연결된 서버 테이블에

SELECT * FROM FROM Offer_Interest oi 
INNER JOIN Offer o ON oi.Offer_ID_SQL = o.Offer_ID_SQL 
INNER JOIN [TR-SF-PROD].[CDataSalesforce].[Salesforce].[Offer__c] osf ON o.Offer_ID_SQL =osf.OFFER_ID_SQL__C 
INNER JOIN Interest i ON oi.Interest_ID_SQL = i.Interest_ID_SQL 
INNER JOIN [TR-SF-PROD].[CDataSalesforce].[Salesforce].[Interest__c] isf ON i.Interest_ID_SQL =isf.Interest_ID_SQL__c 
WHERE o.PrimaryContact_ID_SQL = 2803 

그리고 마지막으로 나는 또한 만든 동의어 여기에 내가 해봤 세 가지 변화가 있습니다. 이들 모두는 동일한 필터를 사용하거나 WHERE 절을 별도로 실행하는 경우 연결 서버 테이블이 OPENQUERY없이 필터를 걸면 버그가있는 것으로 보입니다.

이것은 처음 경험으로 SQL Server에 연결하여 경험이 있거나 문제가있는 사람이라면 대단히 감사하겠습니다!

+0

당신은 하나의 연결된 서버 테이블에만 참여하는 경우 어떤 결과인지 알 수 있지만 다른 결과를 추가하면 0 결과가 반환됩니다. Where 절을 제거하면이 사실이 적용됩니까? – scsimon

+0

@scsimon 예 연결된 테이블 중 하나 (둘 중 하나 또는 다른 하나를 교환 할 수 있음)를 제거하면 결과가 생성되지 않습니다. 필터가 있거나 없거나. –

+0

연결된 서버 테이블에 조인 할 때 생성 된 결과가 없습니다 ... 조인 조건에 따라 결과가 있어야합니다. 즉, 데이터 정렬 문제가 없는지 및/또는 데이터가 실제로 조건에 존재하는지 여부를 확인하십시오. – scsimon

답변

0

정답이 아니므로 그냥 작동해야합니다. 하지만 임시 픽스는 필자가 필요로하는 연결된 테이블 값을 Temp 테이블에 채우고 임시 테이블에 합류하는 것입니다.하지만 이것은 전체 저장 프로 시저 실행에 시간을 추가하므로 확실히 아닙니다. 이상적인 해결책. 누구든지 더 좋은 아이디어가 있다면 여전히 대답하십시오 !!