• 쇼핑몰
  • 커뮤니티
  • 북마크

vb.net


[기타] [C#/VB.NET] Microsoft.Jet.OLEDB.4.0 공급자는 로컬 컴퓨터에 등록할 수 없습니다

하나를하더라도최선을
2021.06.04 07:43 459 0

본문




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

 

 Microsoft.Jet.OLEDB.4.0 은 32bit에서만 작동 된다. 

그래서, 64bit로 빌드 했을때 위 에러가 발생함. 

 

속성에서 빌드 부분의 플랫폼 대상을 x86 으로 바꾸어 줄 것! 

 

웹 인경우에는 IIS 셋팅에서 응용 프로그램 풀의 32비트 응용 프로그램 사용을 True 로 바꾸어 줄 것! 

 

또는 프로그램 적으로 64bit가 사용가능한 "Microsoft.ACE.OLEDB.12.0"을 이용하여 파일을 열면 된다. 

 

http://www.connectionstrings.com/Articles/Show/using-jet-in-64-bit-environments 

 

http://www.connectionstrings.com/textfile 

 

http://www.connectionstrings.com/excel 



'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'로 변경한다.

ae1a1d227984fc8fe14efbc251396668_1622760365_5767.PNG



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

ae1a1d227984fc8fe14efbc251396668_1622760377_4344.PNG

 


댓글목록 0

등록된 댓글이 없습니다.