Microsoft MVP성태의 닷넷 이야기
오류 유형: 121. Access DB에 대한 32bit/64bit OLE DB Provider 관련 오류 [링크 복사], [링크+제목 복사]
조회: 59285
글쓴 사람
홈페이지
첨부 파일
 
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
; http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

참고로, 각각의 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"




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

[연관 글]





[최초 등록일: ]
[최종 수정일: 10/15/2017 ]

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

비밀번호

댓글 쓴 사람
 



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

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

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

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

저만 그런건가요? 혹시 이 문제에 대해서 알고 계신가요?

[손님]
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 파일 더블클릭 하면 바로 연결이 되게 할수는 없나요??
[손님]
2013-03-07 11시44분
udl 파일을 더블클릭해서도 확인할 수 있습니다. 단지, 더블클릭하는 경우에는 64비트/32비트 입맛에 맞게 띄우는 것이 쉽지 않겠지요.
정성태
2014-12-05 06시47분
[태수] 님짱
[손님]
2015-07-22 05시00분
[asdf] 개체 라이브러리(ㅣ)중 하나가 빠졌거나 손상되었습니다 이문제 해결 안될까요? 이거원..

직접 등록이라는게 어떤걸 말씀하는것인지 잘모르겠네요..비쥬얼스튜디오 참조에 걸라는 말씀이신건지.
[손님]
2016-02-26 02시29분
[최철] 약간 오래 된글이지만 깔끔하네요.
cmd 창에서 AccessDatabaseEngine.exe /passive 실행하여 '시스템이 지정된 프로그램을 실행할 수 없습니다.
나올경우에는 바로가기 만들어서 속성 - 대상에서 /passive 추가하시면 됩니다
[손님]
2017-05-22 08시22분
[박현식] 우와~ 감사합니다. 현재 32비트 VS에서 64비트 엑셀을 읽으려고하니 오류가 발생하는데... 위처럼 명령어로 해결이 되네요.
[손님]
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)을 열 때마다 라이브러리 손상 메시지가 뜨므로 지워주셔야 합니다.

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

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

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

1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
12188정성태3/14/2020381Windows: 167. 부팅 시점에 실행되는 chkdsk 결과를 확인하는 방법
12187정성태3/12/2020306오류 유형: 605. NtpClient was unable to set a manual peer to use as a time source because of duplicate error on '...'.
12186정성태3/12/2020376오류 유형: 604. The SysVol Permissions for one or more GPOs on this domain controller and not in sync with the permissions for the GPOs on the Baseline domain controller.
12185정성태3/11/2020300오류 유형: 603. The browser service was unable to retrieve a list of servers from the browser master...
12184정성태3/11/2020479오류 유형: 602. Automatic certificate enrollment for local system failed (0x800706ba) The RPC server is unavailable. [3]
12183정성태3/12/2020356오류 유형: 601. Warning: DsGetDcName returned information for \\[...], when we were trying to reach [...].
12182정성태3/11/2020481.NET Framework: 901. C# Windows Forms - Vista/7 이후의 Progress Bar 업데이트가 느린 문제파일 다운로드1
12181정성태3/11/2020617기타: 76. 재현 가능한 최소한의 예제 프로젝트란? - 두 번째 예제파일 다운로드1
12180정성태3/10/2020280오류 유형: 600. "Docker Desktop for Windows" - EXPOSE 포트가 LISTENING 되지 않는 문제
12179정성태3/10/2020419개발 환경 구성: 481. docker - PostgreSQL 컨테이너 실행
12178정성태3/10/2020310개발 환경 구성: 480. Linux 운영체제의 docker를 위한 tcp 바인딩 추가
12177정성태3/9/2020394개발 환경 구성: 479. docker - MySQL 컨테이너 실행
12176정성태3/9/2020273개발 환경 구성: 478. 파일의 (sha256 등의) 해시 값(checksum) 확인하는 방법
12175정성태3/8/2020435개발 환경 구성: 477. "Docker Desktop for Windows"의 "Linux Container" 모드를 위한 tcp 바인딩 추가
12174정성태3/8/2020548개발 환경 구성: 476. DockerDesktopVM의 파일 시스템 접근 [1]
12173정성태3/8/2020518개발 환경 구성: 475. docker - SQL Server 2019 컨테이너 실행 [1]
12172정성태3/8/2020655개발 환경 구성: 474. docker - container에서 root 권한 명령어 실행(sudo)
12171정성태3/6/2020520VS.NET IDE: 143. Visual Studio - ASP.NET Core Web Application의 "Enable Docker Support" 옵션으로 달라지는 점
12170정성태3/6/2020400오류 유형: 599. "Docker Desktop is switching..." 메시지와 DockerDesktopVM CPU 소비 현상
12169정성태3/5/2020710개발 환경 구성: 473. Windows nanoserver에 대한 docker pull의 태그 사용
12168정성태3/8/2020637개발 환경 구성: 472. 윈도우 환경에서의 dockerd.exe("Docker Engine" 서비스)가 Linux의 것과 다른 점
12167정성태3/5/2020529개발 환경 구성: 471. C# - 닷넷 응용 프로그램에서 DB2 Express-C 데이터베이스 사용 (3) - ibmcom/db2express-c 컨테이너 사용
12166정성태3/14/2020393개발 환경 구성: 470. Windows Server 컨테이너 - DockerMsftProvider 모듈을 이용한 docker 설치
12165정성태3/2/2020408.NET Framework: 900. 실행 시에 메서드 가로채기 - CLR Injection: Runtime Method Replacer 개선 - 세 번째 이야기(Monitor.Enter 후킹)파일 다운로드1
12164정성태2/29/2020408오류 유형: 598. Surface Pro 6 - Windows Hello Face Software Device가 인식이 안 되는 문제
12163정성태2/27/2020442.NET Framework: 899. 익명 함수를 가리키는 delegate 필드에 대한 직렬화 문제
1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...