[.net] ‘Microsoft.ACE.OLEDB.12.0’공급자가 로컬 컴퓨터에 등록되어 있지 않습니다
버튼 클릭 이벤트에서 Excel 파일의 데이터를 가져 오려고합니다. 내 연결 문자열은 다음과 같습니다
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\source\\SiteCore65\\Individual-Data.xls;Extended Properties=Excel 8.0;";
버튼을 클릭하면 다음 오류가 발생합니다.
‘Microsoft.ACE.OLEDB.12.0’공급자가 로컬 컴퓨터에 등록되어 있지 않습니다.
이 문제를 해결하는 방법에 대한 단서가 없습니다. 내 운영 체제는 Windows 7입니다.
답변
글쎄, 당신은 그것을 설치해야합니다. 당신은 찾고 있습니다 :
답변
‘Microsoft.ACE.OLEDB.12.0’공급자를 사용할 수있는 64 비트 버전의 ‘Microsoft Access Database Engine 2010 재배포 가능 파일’은 다음 사이트에서 구할 수 있습니다.
http://www.microsoft.com/en-us/ download / details.aspx? id = 13255
허용 된 답변에서 다운로드를 사용하는 경우 @ backtestbroker.com에서 지적한대로 x86 용으로 빌드해야합니다.
답변
연결을 사용하는 앱 (32 / 64bit)에 따라 방금 설치할 수 있습니다
- 2007 엔진 액세스 (32 비트 만)
- Access 2010 (32 & 64 비트)
- 2013 전체 런타임에 액세스 (32 및 64 비트!> 200mb)
- 2016 년 액세스
- Access 2019 런타임
요약:
- 2007-2016 년의 모든 사무실에는 “Microsoft.ACE.Oledb.12.0″공급자가 포함되어 있습니다.
- 애플리케이션 아키텍처에 따라 적절한 런타임 엔진을 선택하십시오 (32/64). 6
-
32 비트 및 64 비트 셸 의 powershell 명령으로 공급자를 확인하십시오 .
(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION
-
시스템에서 사용할 수있는 공급자를 확인할 수 있습니다
긴 이야기 : 문자열은 http://live.sysinternals.com/strings.exe 에서 찾을 수 있습니다
예. 32 비트 드라이버가 설치된 64 비트 시스템
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSO.DLL" | findstr "ACE.O"
strings.exe -u -n 10 "c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\MSO.DLL" | findstr "ACE.O"
다가오는 사무실에서도 2016
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\MSO.DLL
당신은 문자열을 찾을 수 있습니다
-
Microsoft.ACE.OLEDB
-
Microsoft.ACE.Oledb.12.0
Office 2013은 csi.dll과 함께 제공됩니다
c:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\Csi.dll
c:\Program Files\Common Files\Microsoft Shared\OFFICE15\Csi.dll
여기에는 ” Microsoft.ACE.OLEDB.15.0 “
및 사무실 2016
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\Csi.dll
c:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16\Csi.dll
” Microsoft.ACE.OLEDB.16.0 “버전이있는
답변
가장 먼저 확인해야 할 것은 애플리케이션의 빌드 구성입니다.
-
x86 플랫폼 에서 프로젝트를 빌드 한 경우 문제를 해결하려면 시스템에 다음 패키지를 설치해야합니다.
-
‘Microsoft.ACE.OLEDB.12.0’공급자를 사용 하려면 먼저 Microsoft Access Database Engine 2010 재배포 가능 패키지를 설치 해야합니다
.이 설치는 http://www.microsoft.com/download/en/details.aspx 에서 제공됩니다.
? id = 13255 입니다.설치가 완료된 후 응용 프로그램을 실행 해보십시오. 그래도 문제가 해결되면 2 단계를 계속하십시오.
-
이 다음 단계는 설명 할 수없는 해결 방법으로, Office 2010의 데이터 연결 구성 요소 인 경우에도 Office 2010에서 작동합니다. 이것이 왜 효과가 있는지 잘 모르겠지만 거의 모든 경우에 작동하는 것으로 입증되었습니다. 2007 Office System 드라이버 : 데이터 연결 구성 요소 를 설치 해야합니다 . 이 설치는 http://www.microsoft.com/download/en/confirmation.aspx?id=23734 에서 사용할 수 있습니다
.이 설치가 완료되면 응용 프로그램을 실행 해보십시오. 그러면 문제가 해결됩니다.
-
-
x64 또는 AnyCPU 플랫폼 에서 빌드 된 응용 프로그램 을 실행하려는 경우 먼저 x86 플랫폼에서 예상대로 실행 되는지 확인하는 것이 좋습니다. 해당 x86 플랫폼에서 실행되지 않는 경우 첫 번째 단계를 수행하고 예상대로 실행되는지 확인하십시오.
OLEDB 데이터베이스 드라이버를 포함한 MS Access 드라이버는 x86 플랫폼에서만 작동하며 x64 또는 AnyCPU 플랫폼에서는 호환되지 않는다는 것을 읽었습니다. 그러나 이것은 사실이 아닙니다. x86을 빌드 할 때 응용 프로그램이 실행 중인지 확인한 다음 수동 플래그를 사용하여 Access Database Engine을 설치했습니다.
- 먼저 파일을 로컬로 다운로드하십시오. http://www.microsoft.com/en-us/download/details.aspx?id=13255 에서 설치를 다운로드 할 수 있습니다 .
- ‘/ passive’플래그와 함께 명령 프롬프트를 사용하여 설치 명령 프롬프트에서 다음 명령을 실행하십시오. ‘AccessDatabaseEngine_x64.exe / passive’
이 2 단계 후에 x64 또는 AnyCPU 빌드 구성으로 빌드 한 후 응용 프로그램을 실행할 수있었습니다. 이것은 내 문제를 해결하는 것처럼 보였습니다.
참고 : 단계의 순서는 차이가있는 것으로 보이므로 적절히 따르십시오.
답변
구성 관리자 대화 상자의 빌드를 “x86″에서 “Any CPU”로 변경하면 Visual Studio 2010에서이 오류 / 예외가 발생합니다. 내가 이해하는이 OLEDB 데이터베이스 드라이버는 x86에서만 작동하며 64 비트 호환되지 않습니다. 빌드 구성을 다시 x86으로 변경하면 문제가 해결되었습니다.
답변
MS 드라이버를 설치했는데 여전히 작동하지 않습니다. 그런 다음 이 블로그 게시물 에서 문제를 해결했습니다. 거기에서 읽으십시오. 그렇지 않으면이 두 이미지 (해당 게시물에서 링크 됨)를 TLDR 요약으로 사용하십시오.
답변
64 비트를 사용하고 있지만 AccessDatabaseEngine을 설치 한 후에도 여전히 문제가 있으면 이 게시물을 참조하십시오 . 문제가 해결되었습니다.
즉, 이 AccessDatabaseEngine 을 설치해야합니다.