2007~2011/SQL Server2009. 4. 30. 12:50
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
Posted by Lai Go