Microsoft MVP성태의 닷넷 이야기
오류 유형: 121. Access DB에 대한 32bit/64bit OLE DB Provider 관련 오류 [링크 복사], [링크+제목 복사],
조회: 97834
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 3개 있습니다.)
Access DB에 대한 32bit/64bit OLE DB Provider 관련 오류

예를 들어, x64 운영체제에서 64비트 Office 2010 제품을 설치하고 Visual Studio의 데이터베이스 연결 관리자에서 Access DB에 대해 연결하려고 하면 다음과 같은 오류가 발생할 수 있습니다.

access_db_error_1.png

"
The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
"


오류 원인은 간단합니다. 64비트 Office 제품군을 설치하면서 64비트용 OLE DB 제공자는 시스템에 설치되었지만, 32비트 프로그램인 Visual Studio에서는 64비트용 OLE DB 제공자를 (사용할 수도 없을뿐더러) 찾을 수 없기 때문에 발생하는 것입니다.

이를 확인하기 위해서, 해당 액세스 파일에 대해 UDL 파일을 만들고 각각 32비트/64비트 ODBC 제어판 애플릿을 구동해 보면 알 수 있습니다.

다음과 같이 64비트용에서는 정상적으로 애플릿이 뜨지만,

"C:\Windows\system32\rundll32.exe" "C:\Program Files\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\temp\test.udl


32비트용으로 실행하면 Visual Studio에서와 비슷한 오류 화면이 뜹니다.

"C:\Windows\syswow64\rundll32.exe" "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\temp\test.udl


access_db_error_2.png

"
Provider cannot be found. Ensure that the provider has been installed properly.
"


물론, 이를 해결하기 위해서는 Access DB에 대한 32비트 버전의 OLE DB 제공자(aceoledb.dll)를 설치해야 하는데, Office 2007용의 파일을 설치해도 정상적으로 동작하므로 다음의 경로에서 다운로드 받을 수 있습니다.

2007 Office System Driver: Data Connectivity Components
; https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255

참고로, 각각의 aceoledb.dll 파일경로는 다음과 같습니다.

64비트: "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL"
32비트: "C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\ACEOLEDB.DLL"




만약, Office 2010용의 파일을 설치하고 싶다면 다음의 경로에서 다운로드 받을 수 있습니다.

Microsoft Access Database Engine 2010 Redistributable 
; http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en

위의 경로에서 AccessDatabaseEngine.exe 파일을 다운로드 받아서 실행하는 경우, 이미 Office 2010 64비트 버전이 설치되어 있다면 오류가 발생하면서 더 이상 설치 진행이 되지 않습니다.

access_db_error_3.png

"
You cannot install the 32-bit version of Microsoft Access Database Engine 2010 because you currently have 64-bit Office products installed. If you want to install 32-bit Microsoft Access Database Engine 2010, you will first need to remove the 64-bit installation of Office products. After uninstalling the following product(s), rerun setup in order to install 32-bit version of Microsoft Access Database Engine 2010:
Microsoft Office SharePoint Designer 2010, Microsoft Office Professional Plus 2010, Microsoft Office Visio 2010
"


"Microsoft Office SharePoint Designer 2010, Microsoft Office Professional Plus 2010, Microsoft Office Visio 2010" 3가지 제품을 제거해야 한다니... 말이 안되죠. ^^;

다행히 이에 대해서는 아래의 글에서 손쉬운 해결책을 제시해 주고 있습니다.

Microsoft Access Database Engine 2010 Redistributable
; http://codefluententities.wordpress.com/2011/01/20/microsoft-access-database-engine-2010-redistributable/

즉, 명령행에서 "AccessDatabaseEngine.exe /passive"라고 실행해 주면 되는 것입니다. 최종적으로 aceoledb.dll의 경로는 다음과 같이 정리될 수 있습니다. ^^

     64비트: "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL"
32비트 2007: "C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\ACEOLEDB.DLL"
32비트 2010: "C:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\ACEOLEDB.DLL"





파이썬 Access DB 사용 방법
; https://blog.naver.com/cjinnnn/223047261231



[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 3/20/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2012-07-10 02시50분
[김상록] 32bit office 2010을 사용하던중 64비트 기반의 app를 만들다 에러가 나서 검색하다 보니 알게 되었네요
위에 말씀하신것처럼 2010용 64비트 버전을 설치해서 app에서 발생하던 오류는 해결했습니다.
그런데 64비트 AccessDatabaseEngine_x64.exe 를 설치하고 난 후 excel파일(xlsx)을 열려고 하면

"개체 라이브러리(ㅣ)중 하나가 빠졌거나 손상되었습니다. 설치 프로그램을 실행하여 다시 설치 하십시오."

라는 팝업 메세지가 나옵니다. 확인을 누르면 구성요소 설치를 진행합니다.
구성요소 구성이 완료된 후 정상적으로 엑셀파일이 열립니다.

문제는 엑셀을 종료하고 파일을 새로 열때마다 팝업->구성요소 구성이 진행된다는 것입니다.

저만 그런건가요? 혹시 이 문제에 대해서 알고 계신가요?
[guest]
2012-07-12 01시00분
"김상록" 님이 겪은 현상이 맞습니다. 덧글을 보고 저도 설치를 한 후 엑셀 파일을 열었더니 동일한 현상이 발생했습니다. 일단, 이에 관한 어떠한 해결책도 웹에서 검색되는 것이 없어서 방법을 찾는 것이 쉽진 않을 것 같습니다. (아니면, 마이크로소프트 측에 이슈 제기를 직접하는 것이 좋을 것 같습니다.)

참고로, 저는 그 현상 때문에 다시 '프로그램 추가/삭제'에서 지우는 걸로 끝냈습니다.

한 가지... 그냥 시도해볼만한 방법이 있다면, "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL" 64비트 파일을 직접 등록하는 것이 어떨까 싶습니다. 관련해서는 레지스트리 설정에 불과할 것이기 때문에, 그 부분만 잘 맞춰주면 해결되지 않을까 싶습니다. (나중에 시간나면 저도 한번 이에 대해서 살펴봐야겠습니다. ^^)
정성태
2013-03-07 02시07분
[김동운] 위처럼
C:\Windows\syswow64\rundll32.exe" "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\temp\test.udl
실행없이
udl 파일 더블클릭 하면 바로 연결이 되게 할수는 없나요??
[guest]
2013-03-07 11시44분
udl 파일을 더블클릭해서도 확인할 수 있습니다. 단지, 더블 클릭하는 경우에는 64비트/32비트 입맛에 맞게 띄우는 것이 쉽지 않겠지요.
정성태
2014-12-05 06시47분
[태수] 님짱
[guest]
2015-07-22 05시00분
[asdf] 개체 라이브러리(ㅣ)중 하나가 빠졌거나 손상되었습니다 이문제 해결 안될까요? 이거원..

직접 등록이라는게 어떤걸 말씀하는것인지 잘모르겠네요..비쥬얼스튜디오 참조에 걸라는 말씀이신건지.
[guest]
2016-02-26 02시29분
[최철] 약간 오래 된글이지만 깔끔하네요.
cmd 창에서 AccessDatabaseEngine.exe /passive 실행하여 '시스템이 지정된 프로그램을 실행할 수 없습니다.
나올경우에는 바로가기 만들어서 속성 - 대상에서 /passive 추가하시면 됩니다
[guest]
2017-05-22 08시22분
[박현식] 우와~ 감사합니다. 현재 32비트 VS에서 64비트 엑셀을 읽으려고하니 오류가 발생하는데... 위처럼 명령어로 해결이 되네요.
[guest]
2019-07-11 04시08분
[zxcv] 많이 늦었지만 혹시 검색으로 찾지 못하신 분들을 위해 64bit 기반 os에서 32bit office 2010를 사용하실 때

64비트 AccessDatabaseEngine_x64.exe 를 설치하고 난 후 엑셀파일(xlsx)을 열려고 하면
"개체 라이브러리(ㅣ)중 하나가 빠졌거나 손상되었습니다. 설치 프로그램을 실행하여 다시 설치 하십시오."
팝업 메시지가 나오시는 분들을 위한 해결 방법을 올립니다.

AccessDatabaseEngine_x64.exe를 설치하시기 전 regedit(레지스트리 편집기)를 여시고
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths 경로로 들어가셔서 mso.dll 항목이 없음을 확인합니다.
다음 알려주신 대로 cmd 창에서 AccessDatabaseEngine_64.exe /passive로 수동설치하시고 regedit에서 아까의 경로로 다시 들어가보면
mso.dll 항목이 생성되어 있을 겁니다. 이게 존재하는 한 엑셀파일(xlsx)을 열 때마다 라이브러리 손상 메시지가 뜨므로 지워주셔야 합니다.

지운 후에는 엑셀파일이 정상적으로 열리며 추가적인 문제는 발견하지 못했습니다.
[guest]
2019-11-05 06시07분
[[손님2]] 위에 내용과 관련 하여 설치 하고 cmd 에서 수동 설치 하였습니다.
그런데 C# 에서 열려고 하니 오류가 다른 오류가 바뀌었습니다.

System.RunTime.InteropServices.SEHException:외부 구성 요서에서 예외를 Throw했습니다.
라는 오류가 발생 하더라고요..

검색 해봐도 나오지 않고 .. 어떻게 해결해 나가야 할지..
막막 합니다..
감사합니다.
[guest]
2019-11-06 01시26분
겪으신 현상이 맞을 겁니다. 이 글의 댓글들을 읽어보세요.
정성태

... 166  167  168  169  170  171  172  173  174  175  176  177  178  179  [180]  ...
NoWriterDateCnt.TitleFile(s)
548정성태12/15/200742489오류 유형: 49. Report Server - 원격 서버에 연결할 수 없습니다
547정성태12/4/200731082.NET Framework: 98. .NET 비동기 Socket과 스레드
546정성태12/4/200722098Team Foundation Server: 21. Microsoft Office가 참조된 경우의 빌드 환경 구성
545정성태12/4/200729177Windows: 27. 눈으로 확인해 보는 ASLR 기능 [1]
544정성태11/25/200724720오류 유형: 48. VS.NET 2008 설치 오류 - Error code 1602 [5]
543정성태11/25/200727985개발 환경 구성: 31. ROBOCOPY XP026 버전 [1]
542정성태11/3/200743061VS.NET IDE: 55. XML/XSLT로 구현하는 매크로 확장 [5]파일 다운로드2
538정성태10/11/200729101스크립트: 10. VBScript - "Sub를 호출할 때는 괄호를 사용할 수 없습니다." [2]
537정성태9/28/200738034개발 환경 구성: 30. 64비트 OS에서의 ChartFX 라이선스 문제
536정성태9/12/200735079.NET Framework: 97. WCF : netTcpBinding에서의 각종 Timeout 값 설명 [11]
535정성태9/11/200732313.NET Framework: 96. WCF - PerSession에서의 클라이언트 연결 관리 [5]
534정성태9/3/200727982개발 환경 구성: 29. VHD 파일 크기 줄이기
533정성태9/2/200730556개발 환경 구성: 28. CA 서비스 - 사용자 정의 템플릿 유형 추가
532정성태9/2/200732866개발 환경 구성: 27. AD CA에서 Code Signing 인증서 유형 추가 방법
531정성태9/2/200728821.NET Framework: 95. WCF에서의 DataTable 사용
530정성태9/1/200725255.NET Framework: 94. WCF 예외에 대한 시행착오
529정성태8/31/200728310.NET Framework: 93. WCF - DataContract와 KnownType 특성 [1]
528정성태8/30/200722557오류 유형: 47. VPC - 네트워크 어댑터 MAC 주소 중복 오류
527정성태8/30/200733065Team Foundation Server: 20. 잠긴 파일을 강제로 해제 [2]
526정성태8/29/200722819오류 유형: 46. VS.NET 2008 - ASP.NET 디버깅 : Strong name validation failed.
525정성태8/27/200725056VS.NET IDE: 54. VS.NET 2008 - 새롭게 도입되는 XSD Schema Designer
524정성태8/23/200742571오류 유형: 45. 요청한 작업은, 사용자가 매핑한 구역이 열려 있는...
523정성태8/16/200725055VS.NET IDE: 53. VS.NET 2008 - 서비스 참조 시 기존 데이터 컨테이너 DLL 사용
522정성태8/13/200728767VS.NET IDE: 52. VS.NET 2008 - WCF를 위한 디버깅 환경 개선
521정성태8/8/200728608.NET Framework: 92. XmlSerializer 생성자의 실행 속도를 올리는 방법 - 두 번째 이야기 [3]
520정성태8/7/200723962VS.NET IDE: 51. Visual Studio 2008 베타 2 설치
... 166  167  168  169  170  171  172  173  174  175  176  177  178  179  [180]  ...