SQL Server에서 Oracle에 Linked Server 연결 시 발생한 오류와 관련하여 아래와 같이 정리하였습니다.


[환경]
SQL Server 2005 SP2 (9.00.3042)


[현상]
SQL Server에서 Oracle에 Linked Server 연결 시, 아래 오류 메시지 발생합니다.
단, Windows 인증을 통해서는 정상적으로 연결 테스트가 성공합니다.

------------------------------------------------------------
"연결된 서버에 대한 연결 테스트에 실패했습니다."
------------------------------------------------------------
추가 정보:
Transact-SQL 문 또는 일괄 처리를 실행하는 동안 예외가 발생했습니다. (Microsoft.SqlServer.ConnectionInfo)
------------------------------------------------------------

제한 시간이 만료되었습니다. 작업을 완료하기 전에 제한 시간이 경과되었거나 서버가 응답하지 않았습니다.
(Microsoft SQL Server, 오류: -2)

도움말을 보려면 다음을 클릭하십시오:
http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=-2&LinkId=20476



[원인]
모든 공급 업체의 OLE DB Provider에 대한 기본 구성은 외부 프로세스(Out-of-Process)입니다. 타사 Oracle 공급자를 사용하는 경우 SQL Server 프로세스 외부에서 해당 Oracle 공급자를 실행할 수 없으면 공급자 옵션을 변경하여 프로세스 내부에서 실행될 수 있도록 설정합니다.


[WORKAROUND]
새로운 연결된 서버를 추가할 때 SSMS를 통해 직접 InProcess 허용 옵션을 설정합니다. 단, SQL Server 외부에서 Provider를 인스턴스화 하지 않을 경우 Provider 오류로부터 SQL Server 프로세스를 보호할 수 없는 문제가 발생합니다. 또한 MemToLeave 가용 영역 부족에 의한 장애가 발생할 수 있습니다.

InProcess 허용을 설정하는 방법은 아래와 같습니다.
공급자 옵션을 누른 다음 InProcess 허용 확인란을 눌러 선택합니다.

데이터베이스 연결 - Server Objects - Linked Servers - Providers - OraOLEDB.Oracle - Allow Inprocess




[참고자료]
SQL Server에서 Oracle에 연결된 서버 설정 및 문제 해결 방법
http://support.microsoft.com/kb/280106/ko


작성자 : Lai Go / 작성일자 : 2008.10.14
Posted by Lai Go