OPENROWSET 명령이 말을 듣지 않습니다. 레지스트리에 사용 제한이 적용되지 않았으며 기본적인 오류 코드검색 결과 Provider 또는 Connection String 이슈일 가능성이 높아 보입니다. 잘못된 부분을 찾아 아래와 같이 정리하였습니다.
[환경]
SQL Server 2000 (2050)
[현상]
다음 쿼리를 실행할 경우 아래와 유사한 오류 메시지가 발생합니다.
SELECT * FROM OPENROWSET ('MSDAORA', 'Data Source=LAIGO.World'; 'User ID=LAIGO'; 'Password=P@$$w0rd', 'SELECT * FROM TABLE1')
서버: 메시지 7399, 수준 16, 상태 1, 줄 1
OLE DB 공급자 'MSDAORA'이(가) 오류를 보고했습니다.
[OLE/DB provider returned message: ORA-03121: no interface driver connected - function not performed]
OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80004005: ].
서버: 메시지 7399, 수준 16, 상태 1, 줄 1
OLE DB 공급자 'MSDAORA'이(가) 오류를 보고했습니다. 인증이 실패했습니다.
[OLE/DB provider returned message: ORA-01017: invalid username/password; logon denied]
OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80040e4d: 인증이 실패했습니다.].
서버: 메시지 7399, 수준 16, 상태 1, 줄 1
OLE DB 공급자 'MSDAORA'이(가) 오류를 보고했습니다.
[OLE/DB provider returned message: ORA-12154: TNS:could not resolve service name]
OLE DB 오류 추적 [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80004005: ].
[원인]
Connection String 매개변수가 잘못 입력되었습니다.
[해결방법]
아래의 Connection String 을 사용합니다. 세미콜론(;) 이후 띄어쓰기에 유의해야 합니다.
SELECT * FROM OPENROWSET ('MSDAORA', 'LAIGO.World'; 'LAIGO'; 'P@$$w0rd', 'SELECT * FROM TABLE1' )
[분석결과]
1. TNSPING 성공
2. 연결된 서버 연결 테스트 성공
3. 커넥션 스트링 점검
작성자 : Lai Go / 작성일자 : 2009.04.30