2013-12-20 4 views
0

두 개의 다른 연결된 서버에서 테이블에 액세스하려고합니다. 기본적으로 한 서버에서 ID의 목록을 얻고 다른 연결된 서버에서 ID가 일치하는 두 개의 다른 열을 가져와야합니다.동일한 쿼리에서 두 개의 서로 다른 연결된 서버에 액세스하는 방법

나는 하나의 서버에서 이드를 먼저 가져 와서 엑셀로 채 웠습니다. 이 후, 나는 다른 서버에서 모든 데이터를 가져 와서 일치하는 행을 선택하는 VB 매크로를 썼습니다. 실제로는 많은 시간이 걸리고, 실제로는 비교할 내용이 많으므로 시간이 걸립니다. 이것에 대한 정말 간단한 해결책이 있습니까?

나는 아래의 것과 같은 것을 시도하지만, 결과를 얻으려면 문제에 직면한다.

select * from openquery([server1], 
    'select schema1.table1.col1, schema1.table1.col2 from schema1.table1 where schema1.table1.col1 exists 
    (select * from openquery([server2],'select schema2.table2.col1 from schema2.table2')') 

어떤 도움을 주시면 감사하겠습니다.

미리 감사드립니다.

+0

SQL Server라고 가정합니다. – gvee

+0

어떤 데이터베이스입니까? SQL Server, MySQL, Oracle 등의 DBMS를 적절한 DBMS에 추가하면 DBMS마다 상황이 자주 달라질 수 있습니다. –

+0

예 켄 화이트. 나는 데이타베이스 부분에서 약간 명확해야했다. 둘 다 DB2 서버이며이 서버를 링크 된 서버로 추가했습니다. SSMS에서이 쿼리를 실행하려고합니다. – Mekala

답변

0

필자는이 말을 그대로 사용하여 로컬 테이블과 연결된 1 개의 db 테이블 사이를 쿼리합니다. 인텔리이 작동하지 연결된 서버 테이블 '처럼',하지만은 않을 수 있습니다 : 다른 내부를뿐만 아니라 다른 모든 조건에 일치 또는 추가 거기에 '어디서'절을 넣을 수 있습니다

Select GlobalEntityID, LicenseNumber, IssueDate, ExpireDate, BusinessLicenseClosedDate, bl.Issued, bl.Expire, bl.Cease 
From COLICENSECERTIFICATION lic 
Inner Join 
    [LinkedServer].[DB].[schema].[blAttribs] bl on lic.LICENSENUMBER = bl.Account_key 
Order by LicenseNumber; 
go 

다른 연결된 서버를 추가하세요 테이블을 쿼리에 추가하십시오.

+0

이 쿼리에 SQL Server 2012를 사용하고 있지만 2005 년까지 작동해야합니다. – JFV

+0

감사합니다 JFV. 한 번에 하나의 연결된 서버에 액세스 할 수 있지만 두 개의 서로 다른 연결된 서버에서 데이터를 검색하려고 할 때 couldnt합니다. 여기에 모두 DB2 연결된 서버가 있습니다. – Mekala

+0

좋습니다, 테스트 할 DB2 서버가 없습니다. 행운을 빕니다! – JFV