2012년 11월 15일 목요일

'Microsoft.JET.OLEDB.4.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다.

System.Data.OleDb.OleDbDataAdapter 클래스를 생성하는데 다음과 같은 예외가 발생했다.

  •  'Microsoft.Jet.OLEDB.4.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다.
  •  'Microsoft.ACE.OLEDB.12.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다. 


원인 

구글링 결과 보통 두 가지 이유 때문에 발생하는 예외라 한다. x86 서버에서는 잘 돌아가던 웹 서비스가 x64 서버에서만 예외가 발생하니 아마도 두 번째 이유가 원인인 듯 하다.

  1. 서버에 Office System Driver가 설치되지 않았을 경우 
  2. x64 서버에서 웹 서비스를 호스팅할 경우 


해결 

첫 번째 경우는 Office System Driver를 설치하면 간단하게 해결된다.

 [2007 Office system 드라이버 : 데이터 연결 구성 요소 다운로드] 

두 번째 경우는 등록된 OLE DB Provider가 x64 플랫폼을 지원하지 않기 때문이다. IIS 설정을 변경하거나 프로젝트 빌드 플랫폼 변경을 통해 x86 모듈에 대한 호환성을 추가해준다.

IIS 설정 변경 (IIS7) 
IIS관리자에서 응용 프로그램 풀을 선택. 우 클릭하여 '고급 설정'을 선택한다. '32비트 응용 프로그램 사용'을 'True'로 변경한다.



빌드 플랫폼 변경 (VS2010) 
프로젝트 이름을 클릭하고 우 클릭, '속성'을 선택하여 '빌드'탭의 '플랫폼 대상'을 'x86'으로 변경한다.



댓글 2개:

  1. 관련문서가 무수히 검색되도 해결이 잘 안됐는데
    정리를 잘해놓으셔서 도움 받았습니다.
    감사합니다.

    답글삭제
  2. 해결은 안되었지만, 설명이 좋네요.. 감사합니다. 참고해서 쓰겠습니다.

    답글삭제