2009-11-06 3 views
0

iSeries의 DB에있는 일부 테이블에 액세스하기 위해 SQL 2008 Express에서 AS400을 링크 된 서버로 추가하려고합니다. 나는 많은 다른 문자열을 가진 모든 OLE 공급자를 시도해 왔으며 연결을 구축하는 데 운이 없었습니다. 이 버전의 SQL에서도 가능합니까? 나는뿐만 아니라 AS/400 OLE DB 공급자에 문제가 했어SQL 2008 Express가 설치된 AS400/DB2에 액세스

답변

1

감사합니다. 그래서 나는 부정한 대신 ODBC를 사용했다. AS/400에 연결할 시스템 DSN을 작성하십시오. 다음과 같이 연결된 서버 생성 : 이전의 예에서

EXEC sp_addlinkedserver 
    @server = 'MyServer', 
    @srvproduct = '', 
    @provider = 'MSDASQL', 
    @datasrc = 'AS400' 

을, 난 내 시스템 DSN에게 "AS400"의 이름을 주었다. SQL Express 내에서 서버는 "MyServer"라고합니다. 이 솔루션의 문제점은 다음과 같습니다. iSeries Access ODBC 제공자를 사용했으며 기본적으로 내 로컬 시스템에 암호를 저장하지 않습니다. 그래서 나는 그린 스크린 세션을 먼저 불러 와서 AS/400에 연결되었는지 확인해야했다. 연결된 서버 정의가 추가되고 활성 연결이, 또는 암호 문제가 ODBC 연결 함께 일하면

어쨌든, 당신은 다음과 같은 데이터를 얻을 수있는 쿼리를 실행 :

SELECT * FROM MyServer.MySystem.MyLibrary.MyFile 

여기서 "MyServer"은 sp_addlinkedserver 호출의 @ server = 부분에 입력 한 이름입니다. "MySystem"은 AS/400 데이터베이스 이름입니다. 녹색 화면에 로그온하고 WRKRDBDIRE 명령을 사용하여이 값을 판별 할 수 있습니다. * LOCAL의 리모트 위치를 가진 항목이 데이터베이스 이름입니다. "MyLibrary"및 "MyFile"은 자명합니다.

쿨한 해결책처럼 느껴지지만 작동합니다.

0

동일한 문제가 있지만이 솔루션은 저에게 효과적입니다. 연결된 서버를 추가 한 후 어떤 식 으로든 라이브러리 & 테이블이 표시되지 않지만 연결되어 있습니다. 당신은 세부 here

을 확인할 수 있습니다

select * from OpenQUery(<name_of_linked_server>, 'select * from <library>.<table>'); 

: 그냥이 쿼리를 시도