'Microsoft.ACE.OLEDB.12.0'공급자가 로컬 컴퓨터에 등록되어 있지 않습니다


442

버튼 클릭 이벤트에서 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입니다.


5
접선 설명 : OLEDB를 사용하여 Excel 파일을 읽는 것은 매우 느린 기술이며, 검색 한대로 대상 컴퓨터에 수동으로 추가 패키지를 설치해야합니다. (물론 2011 년에 질문을 받았습니다.) 대신 즉시 작동하는 ClosedXml (NuGet에서 사용 가능)을 사용하십시오.
Shaul Behr

3
@ShaulBehr 좋았지 만 ClosedXml은 .xls가 아닌 .xlsx 파일에서만 작동합니다.
Jimmy

2
Sql Server로 가져 오는 경우 ssms에서이 쿼리를 실행할 수 있습니다. execute master.dbo.xp_enum_oledb_providers 자신이 생각하는 공급자를 알려줍니다. 오래되었지만 Microsoft.ACE.OLEDB.16.0과 Microsoft.ACE.OLEDB.12.0을 모두 가지고 있었지만 데이터를 가져 오려고 할 때 Excel 16에서 OP와 동일한 '로컬 컴퓨터에 등록되지 않았습니다'라는 메시지가 나타납니다. 및 Excel 2007 파일 형식 (각각 oledb.16.0 및 oledb.12.0). 이 시점에서 손실을 줄이고 Microsoft 소프트웨어를 포기하는 것이 좋습니다.
user1040323

1
@ user1040323, 로컬 컴퓨터가execute master.dbo.xp_enum_oledb_providers 아닌 서버의 내용을 알려줍니다 .
Nathan Goings

1
여기 작동해야하는 것이 있습니다. -그것은 : 실제로 문서화되어 있지는 않지만 32 비트 및 64 비트 버전을 모두 설치하는 방법을 찾았습니다. 명령 행 인수 "/ passive"를 다음 명령에 추가하십시오. "C : \ directory path \ AccessDatabaseEngine_x64.exe"/ passive
TaW

답변:


532

글쎄, 당신은 그것을 설치해야합니다. 당신은 찾고 있습니다 :


44
이러한 구성 요소를 다운로드했지만 작동하지 않았습니다. 여기에서 Microsoft Access Database Engine 2010 재배포 가능 패키지를 다운로드 해야했습니다 . microsoft.com/en-in/download/details.aspx?id=13255 MS Office 2013을 사용하고 있습니다. 올바른 방향으로 안내해 주셔서 감사합니다.
Sizons

5
액세스 데이터베이스 엔진과 2007 Office System 드라이버 : 데이터 연결 구성 요소 ( microsoft.com/en-us/download/confirmation.aspx?id=23734) 를 설치해야 작동했습니다.
Chris

6
내 상황, 모든 것이 잘 작동하고 갑자기이 오류가 발생하기 시작했습니다. 그래서이 일을 어떻게 할 수 있었습니까? 코드가 변경되지 않았습니다.
eetawil

21
필자의 경우 아키텍처와 일치하도록 "Any CPU"에서 x64로 전환해야했습니다.
Rob Sedgwick

2
Jack the Ripper는 의견이 아니라 답변 자체에 제공된 솔루션을 말합니다. 2007 Office System Driver: Data Connectivity Components문제를 즉시 설치하면 문제가 해결되었습니다.
silkfire

156

'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 용으로 빌드해야합니다.


18
VS 2012를 사용하는 경우 프로젝트의 속성 >> 빌드 >> 일반 구성에서 "32 비트 선호"확인란이 선택 해제되어 있는지 확인하십시오.
devstruck

3
VS 2008을 사용하고 있습니다 (요청하지 않음).이 솔루션은 post_erasmus 팁을 읽고 속성 >> 빌드 >> 내 응용 프로그램의 일반 구성에서 'Platform Target'을 x64로 설정해야 작동합니다. 고마워요!
자원

1
이 답변의 링크를 사용하면 32 비트 버전을 다운로드하여 설치할 수 있습니다. Windows 7 64 비트가 있지만 Visual Studio 2013의 IIS Express는 기본적으로 32 비트 모드로 실행되며 이미 일부 Office 2013 구성 요소가 32 비트로 설치되어 있으므로 32 비트 설치가 필요합니다.
Eric Barr

1
이 답변을 사용하여 응용 프로그램 풀에서 "32 비트 응용 프로그램 사용"을 False로 설정해야합니다.
iowatiger08

1
이것은 내 문제를 해결하는 데 도움이되었습니다. 내 VS 2019 앱은 모든 CPU를 사용하여 컴파일되어 x64 라이브러리가됩니다. 32 비트 버전의 Office 2013이 설치되어 x64 Access DB 엔진을 설치하지 못했습니다. x64 버전의 Office를 설치 한 후 x64 엔진을 설치할 수 있었고 이제 모든 것이 작동합니다. DLL 지옥은 살아있다.
Mike Lowery

74

연결을 사용하는 앱 (32 / 64bit)에 따라 방금 설치할 수 있습니다

요약:

  • 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 "버전이있는


VS2015에서 Nuget LinqToExcel을 사용 하여이 오류가 발생했습니다. x64 ACE가 설치되었으므로 Any CPU를 대상으로하는 대신 x64 (Configuration Manager)를 명시 적으로 빌드해야했습니다.
subsci

Powershell에 "Microsoft.ACE.Oledb.12.0"이 이미 설치되어 있음이 표시되었습니다. 그러나 Access 2007 패키지 (일명 2007 Office System 드라이버 : 데이터 연결 구성 요소 )를 설치하면 문제가 해결됩니다. 이미 내 시스템에 : Office 2016 Ent, Visual Studio 2017 Ent
SushiGuy

6
설치된 버전을 알려주는 PowerShell 스크립트는 천재입니다! 감사합니다 @Bernhard
Rob Bowman

약간 비논리적이지만이 간단한 파워 쉘은 ODBC 드라이버 용입니다.Get-OdbcDriver | select Name,Platform
Bernhard

이렇게하면 32 비트 Access 2016 런타임을 다운로드하여 64 비트 서버 시스템에서 문제가 해결되었습니다. 기본적으로 32 비트로 시작하여 안전한면에 오십시오 (프로젝트에서 항목을 64 비트로 전환하려고하면 나쁜 일이 발생합니다).
Eric Mutta

45

가장 먼저 확인해야 할 것은 애플리케이션의 빌드 구성입니다.

  • x86 플랫폼 에서 프로젝트를 빌드 한 경우 문제를 해결하려면 시스템에 다음 패키지를 설치해야합니다.

    1. 'Microsoft.ACE.OLEDB.12.0'공급자를 사용 하려면 먼저 Microsoft Access Database Engine 2010 재배포 가능 패키지를 설치 해야합니다 .이 설치는 http://www.microsoft.com/download/en/details.aspx 에서 제공됩니다. ? id = 13255 입니다.

      설치가 완료된 후 응용 프로그램을 실행 해보십시오. 그래도 문제가 해결되면 2 단계를 계속하십시오.

    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을 설치했습니다.

    1. 먼저 파일을 로컬로 다운로드하십시오. http://www.microsoft.com/en-us/download/details.aspx?id=13255 에서 설치를 다운로드 할 수 있습니다 .
    2. '/ passive'플래그와 함께 명령 프롬프트를 사용하여 설치 명령 프롬프트에서 다음 명령을 실행하십시오. 'AccessDatabaseEngine_x64.exe / passive'

    이 2 단계 후에 x64 또는 AnyCPU 빌드 구성으로 빌드 한 후 응용 프로그램을 실행할 수있었습니다. 이것은 내 문제를 해결하는 것처럼 보였습니다.

참고 : 단계의 순서는 차이가있는 것으로 보이므로 적절히 따르십시오.


5
32 비트 응용 프로그램에서 64 비트로 전환하고 더 이상 실행되지 않는다는 문제가있었습니다. 지시의 두 번째 부분은 완벽하게 작동합니다! / 수동 플래그는 심지어 32 비트 마이크로 소프트 오피스에 설치할 수 있습니다.
프레디

1
팁 : 폴더에 AccessDatabaseEngine_x64.exe를 추출하여 AceRedist.msi 및 Data.cab 파일을 가져 오십시오. 관리 모드에서 cmd 프롬프트를 열고를 실행하십시오 AceRedist.msi /passive.
제레미 톰슨

1
고마워 첫 번째 옵션은 저에게 효과적이었습니다. 32 비트 Office를 제거하기 위해 얼마나 번거 로웠으며 64 비트 오피스를 설치 한 후에 만이 문제가 일찍 해결되었습니다. 그러나이 64 비트 사무실 구성 요소는 대신 마법을 수행했습니다.
Biki

2 점 때문에 고정되었습니다. 대단히 감사합니다. 이 microsoft.com/download/en/confirmation.aspx?id=23734 을 설치해야합니다 .
SENA

33

구성 관리자 대화 상자의 빌드를 "x86"에서 "Any CPU"로 변경하면 Visual Studio 2010에서이 오류 / 예외가 발생합니다. 내가 이해하는이 OLEDB 데이터베이스 드라이버는 x86에서만 작동하며 64 비트 호환되지 않습니다. 빌드 구성을 다시 x86으로 변경하면 문제가 해결되었습니다.


5
OLEDB는 x64와 호환됩니다. x86뿐만 아니라 모든 CPU에서도 모든 플랫폼에서 실행될 수 있습니다. 아래의 전체 답변을 참조하십시오 : stackoverflow.com/a/32760211/3637582
Merav Kochavi

Visual Studio에서 응용 프로그램을 디버깅하면 실제로 구성 관리자에서 CPU / x64 대신 x86을 선택하는 데 도움이됩니다.
iknownothing

25

MS 드라이버를 설치했는데 여전히 작동하지 않습니다. 그런 다음 이 블로그 게시물 에서 문제를 해결했습니다. 거기에서 읽으십시오. 그렇지 않으면이 두 이미지 (해당 게시물에서 링크 됨)를 TLDR 요약으로 사용하십시오.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


이것을 저의 공헌으로 게시하려고했습니다. 이것은 내 문제였다. 내 솔루션의 한 프로젝트가 x86 컴파일 된 이후 어제이 IIS 설정을 변경 했으므로 전체 프로그램을 32 비트로 분류한다고 가정합니다.

내 서버에서 @ 64 비트를 실행 중이지만 설치된 MS Office 구성 요소는 32 비트입니다. 이것은 내 문제를 해결했습니다. 감사합니다.
MarceloBarbosa

정말 놀라운 일이 아닙니다. (,
David Rogers

@DavidRogers는 아마 PS의 전문가가 아니므로 저를 보지 마십시오! ;-)
Shaul Behr

@ShaulBehr 희망은 (A 높은 파워 쉘 / cmd를 창에서) 내가 사용하는 특정 명령했다, 다른 사람에게 통찰력을 제공합니다 : "C : \ WINDOWS \ SYSTEM32 \ inetsrv를 \ ./ APPCMD 명령어 세트 AppPool을 /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64을 : 사실 "
David Rogers


15

여전히 이것에 의해 영향을받는 모든 사람들에게.

오류가 발생했습니다 ...

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

... OP, Shailesh Sahu가 설명한대로.

64 비트 Windows 7이 있습니다.

내 문제는 PowerShell 스크립트 내에 있지만 OP의 게시물과 비슷한 연결 문자열을 사용하고 있기 때문에 C #, PowerShell 및 "Microsoft.ACE.OLEDB"드라이버에 의존하는 다른 언어에 결과를 적용 할 수 있기를 바랍니다.

이 MS 포럼 스레드에 대한 지침을 따랐습니다. http://goo.gl/h73RmI

먼저 64 비트 버전을 설치 한 다음 이 페이지 http://www.microsoft.com/en-us/download/details.aspx?id=13255 에서 32 비트 버전의 AccessDatabaseEngine.exe 를 설치 하려고했습니다 .

그러나 여전히 기쁨은 없습니다.

그런 다음 PowerShell 에서 아래 코드를 실행했습니다 (SQL Panda 사이트 http://goo.gl/A3Hu96 )

(New-Object system.data.oledb.oledbenumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION 

...이 결과를 얻었습니다 (간단하게 다른 데이터 소스를 제거했습니다) ...

SOURCES_NAME              SOURCES_DESCRIPTION                                                                       
------------              -------------------                                                                       
Microsoft.ACE.OLEDB.15.0  Microsoft Office 15.0 Access Database Engine OLE DB Provider

보시다시피 Microsoft.ACE.OLEDB가 있습니다. Microsoft.ACE.OLEDB가 아닌 15 .0 (15). 12.0 (12)

그래서 연결 문자열을 15로 수정하여 작동했습니다.

따라서 버전을 소프트 코딩하는 방법을 보여주는 빠른 PowerShell 스 니펫

$AceVersion = ((New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | Where-Object { $_.SOURCES_NAME -like "Microsoft.ACE.OLEDB*" } | Sort-Object SOURCES_NAME -Descending | Select-Object -First 1 SOURCES_NAME).SOURCES_NAME

$connString = "Provider=$AceVersion;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=NO`";"

둘 이상의 경우 최신 ACE 버전을 선택하도록 수정되었습니다.

이걸 찾는 사람은 이제 어떤 OLEDB 버전이 설치되어 있는지 확인하고 적절한 버전 번호를 사용할 수 있기를 바랍니다.


안녕하세요, PowerShell로 Excel 시트를 읽으려고합니다. Excel 파일은 SharePoint 문서 라이브러리에 저장되어 있으며 서버에 Excel이 설치되어 있지 않습니다. Windows Server 2008 R2가 있습니다. Office System Driver : Data Connectivity Components를 설치했지만 쿼리를 실행할 때 Microsoft.ACE.OLEDB를 볼 수 없습니다. 그것에 대한 아이디어가 있습니까? 그리고 어떤 제안? 미리 감사드립니다.
doganak

3
답을 찾았습니다. 시스템 관리자에게 MS Access Database Engine을 설치하도록 요청했습니다. 그는 x86 버전을 설치했습니다. PowerShell x86에서 쿼리를 다시 실행하면 ACE.OLEDB가 나타났습니다.
doganak

멋진 PowerShell 코드. 32 비트 버전 (PowerShell 목록에 표시되지 않음)이있어서 64 비트 버전을 설치하지 못했습니다. 32 비트 버전을 제거한 후에는 "이미 32 비트 Office 구성 요소가 있습니다 ..."메시지없이 64 비트 버전을 설치할 수있었습니다. 64 비트 버전이 PowerShell 목록에 표시되고 내 앱이 작동하기 시작했습니다.
Doppelganger

13

많은 답변을 받았지만, 발생한 문제는 아직 언급되지 않았습니다.

  • 내 시나리오 : 64 비트 응용 프로그램, Win10-64, Office 2007 32 비트가 설치되었습니다.
  • MS에서 다운로드 한 32 비트 설치 프로그램 AccessDatabaseEngine.exe 를 설치하면 성공을보고하지만 위의 게시물 중 하나의 Powershell 스크립트를 통해 확인 된대로 설치되지 않습니다.

  • 64 비트 설치 프로그램 AccessDatabaseEngine_X64.exe를 설치 하면 충격적인 오류 메시지가보고되었습니다.

여기에 이미지 설명을 입력하십시오

매우 간단한 해결책이 발견되었습니다 여기에 오토 데스크 사이트. 다음과 같이 매개 변수 / passive를 명령 행 문자열에 추가하십시오.

AccessDatabaseEngine_X64.exe / passive

설치가 완료되었으며 OleDb 드라이버가 작동했습니다.

OleDb로 처리중인 Excel 파일은 xlsx 형식이며 EPPlus 4.5로 제작되었으며 Excel 2007로 수정되었습니다.


1
일반적인 방법으로 AccessDatabaseEngine_X64.exe를 설치할 수 있지만 수동 매개 변수를 사용하여 32 비트 equilavent (AccessDataBaseEngine.exe)를 설치했습니다. 그럼, 마지막으로 비주얼 스튜디오 2019에서 Access 데이터베이스에 연결할 수 있습니다
VolkanOzcan

10

사무실 설치의 규모에 따라 솔루션 플랫폼을 "모든 CPU"에서 "x86"또는 "x64"로 변경해야합니다.

단계는 다음과 같습니다.

  1. 솔루션 탐색기에서 솔루션 파일을 마우스 오른쪽 버튼으로 클릭하십시오. 여기에 이미지 설명을 입력하십시오

    1. 구성 관리자를 클릭하십시오.
    2. x86이 이미있는 경우 활성 플랫폼 드롭 다운을 클릭 한 후 새로 선택을 클릭하십시오. 여기에 이미지 설명을 입력하십시오

    3. 새 플랫폼 드롭 다운에서 x86 또는 x64를 선택하십시오. 여기에 이미지 설명을 입력하십시오

응용 프로그램을 컴파일하고 실행하십시오.


6

설치된 "AccessDatabaseEngine"이 여전히 도움이되지 않으면 아래의 해결 방법이 있습니다.

Active Solution 플랫폼을 "Any CPU"에서 "x86"으로 변경해야합니다.

OLEDB 공급자가 로컬 컴퓨터에 등록되지 않았습니다

CodeProject.com에서


'x86'뿐만 아니라 'x64'와 같은 'Any CPU'로 모든 플랫폼에서 실행할 수 있습니다. 아래의 전체 답변보기 : stackoverflow.com/a/32760211/3637582
Merav Kochavi

6

이 기사의 단계를 수행하여이 문제를 해결할 수있었습니다. http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered- 로컬 머신

나를위한 핵심 사항은 다음과 같습니다.

IIS로 디버깅 할 때

기본적으로 Visual Studio는 32 비트 버전을 사용합니다. 도구»옵션»프로젝트 및 솔루션»웹 프로젝트»일반으로 이동하여 Visual Studio 내에서이를 변경할 수 있습니다.

"웹 사이트 및 프로젝트에 64 비트 버전의 IIS Express 사용"

해당 옵션을 확인한 다음 프로젝트의 플랫폼 대상을 "Any CPU"로 다시 설정 한 후 (문제 해결 프로세스의 어딘가에 x86으로 설정) 오류를 극복 할 수있었습니다.


1
감사합니다. 대부분의 다른 답변은 32 비트로 내려가는 것이지만 64 비트로 진행하는 데 도움이됩니다.
illinoistim

내가 찾고있는 것이 대단히 감사합니다.
Manoj Kalluri

6

웹 프로젝트를 디버깅하는 경우 프로젝트 설정에 따라 IIS Express 가 32 비트 또는 64 비트로 실행되고 있는지 확인하십시오 .

이동

도구> 옵션> 프로젝트 및 솔루션> 웹 프로젝트

거기에서 '64 비트 버전의 IIS Express 사용 ... '을 선택하십시오.


1
와우 많은 시간 동안 다른 솔루션을 시도해보십시오. 감사합니다
Hernaldo Gonzalez

5

먼저 시스템에 설치된 microsoft.ace.oledb.12.0의 버전을 확인하십시오.

아래 경로 C : \ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --64 비트가 설치되어 있는지 확인하십시오.

아래 경로 C : \ Program Files (x86) \ Common Files \ Microsoft Shared \ OFFICE14 \ ACEOLEDB.DLL --x86 비트가 설치되어 있는지 확인하십시오.

(x86)이 설치된 경우 구성 관리자를 사용하여 솔루션 플랫폼을 x86으로 변경하고 x64는 x64로 변경하십시오.

사용할 수없는 경우 아래 링크를 사용하여 설치하십시오.

https://www.microsoft.com/en-us/download/details.aspx?id=23734


3

syp_dino,

"Microsoft.ACE.OLEDB.12.0 '공급자가 로컬 컴퓨터에 등록되어 있지 않습니다"라는 제안에 대한 해결책 오류 솔루션은 Active Solution Platform을 "Any CPU"에서 "x86"으로 변경하는 것입니다.

이 단계를 수행하고 솔루션을 다시 빌드하고 EXE를 가져와 네트워크에 배치하면 모든 것이 Windows 7 64 비트 시스템에서 원활하게 작동했습니다.


x86뿐만 아니라 모든 CPU에서도 모든 플랫폼에서 실행할 수 있습니다. 아래의 답변을 참조하십시오 : stackoverflow.com/a/32760211/3637582
Merav Kochavi

3

SSMS 2014를 사용하여 Excel 파일 (xlsx)에서 SQL Server DB로 데이터를 가져 오려고 할 때이 문제가 발생했습니다.

2007 오피스 시스템 드라이버 : 데이터 연결 구성 요소 설치는 나를 위해 트릭을했다.


... 그래도 작동하지 않으면 "데이터 소스 선택"화면의 드롭 다운 목록에서 다른 "엑셀 버전"을 선택하십시오. stackoverflow.com/a/56171883/283895
tgolisch 2016 년

@Taran 링크를 사용할 수 없습니다
evry1falls

이것은 파일처럼 보이지만 download.cnet.com/…을
Taran

3

나는이 같은 문제에 직면했다. 솔루션 속성으로 이동하여 모든 CPU를 x86으로 변경하면 작업을 수행 할 것이라고 생각합니다.


3

이 2 단계를 수행하십시오. 1.이 메뉴에서 : 프로젝트-> yourproject 속성 ...-> 빌드 : "32 비트 선호"선택을 해제하십시오. 2. connectionString에서 다음과 같이 확장 속성 앞뒤에 큐트로 작성 엑셀 12.0 Xml; HDR = YES '

                var fileName = string.Format("{0}", openFileDialog1.FileName);
            //var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
            var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0 Xml;HDR=YES'", fileName);
            var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
            var ds = new DataSet();

            adapter.Fill(ds, TableNmae);

            DataTable data = ds.Tables[TableNmae];
            dg1.DataSource = data;

Microsoft Access Database Engine 2010 재배포 가능 패키지를 설치하는 동안 "32 비트 선호"를 선택 해제하면 효과가있는 것 같습니다.
IT Delinquent

나는 '32 -Bit 선호 '를 체크하지 않았으며 작동하고있었습니다 !!!
user1584253

3

이 구성은 2020 년 1 월에 새 머신 빌드에서 작동했습니다.

(1-x64에만 해당) / passive 인수와 함께 설치된 Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016, VStudio 빌드 설정은 다음 연결 문자열과 함께 x64로 명시 적으로 설정됩니다. Provider = Microsoft.ACE.OLEDB.16.0; 데이터 소스 = D : ... \ MyDatabase.accdb

(2-x64 또는 x32) / passive 인수와 함께 설치된 Windows 10 x64, Office 365 x64, AccessDatabaseEngine_x64 2016, / passive 인수와 함께 설치된 PLUS AccessDatabaseEngine 2010 (32 비트), VStudio 빌드 설정은 AnyCPU로 설정되며 다음 연결 문자열 : Provider = Microsoft.ACE.OLEDB.16.0; 데이터 소스 = D : ... \ MyDatabase.accdb

(3-x32에만 해당) / passive 인수와 함께 설치된 Windows 10 x64, Office 365 x32, AccessDatabaseEngine 2010 (32 비트), VStudio 빌드 설정을 x86으로 설정하고 다음 연결 문자열을 사용합니다. Provider = Microsoft.ACE.OLEDB.12.0; 데이터 소스 = D : ... \ MyDatabase.accdb

실패 참고

연결 문자열에서 ACE.OLEDB.12.0 x64 공급자를 사용하면 위의 (1)에서와 같이 AccessDatabaseEngine_x64 2016 만 설치되어 실패했습니다.

Visual Studio 빌드 설정에서 AnyCPU 사용이 (1)에서 실패했습니다. x64를 설정해야합니다. AnyCPU는 Vstudio가 컴파일 타임에 x32 ACE.OLEDB.nn.0 공급자를 볼 수 있어야하기 때문일 수 있습니다.

ACE.OLEDB.12.0 2016 x32 / passive 엔진은 x64 응용 프로그램을 볼 때 설치되지 않습니다. (ACE.OLEDB.12.0 2010 x32 / passive 설치 프로그램이 작동했습니다.)

결론

x64 빌드 설정을 사용하려면 2016 x64 데이터베이스 엔진과 ACE.OLEDB.16.0있어야합니다. 연결 문자열 공급자 및 명시 적 x64 빌드 설정이 있어야 2020 년 1 월에 Office 365와 작동 할 수 있습니다. / passive 옵션을 사용하면 쉽게 설치할 수 있습니다. 그 팁을 올린 사람에게 크레딧!

AnyCPU를 사용하려면 ACE.OLEDB.12.0 2010 x32 엔진과 ACE.OLEDB.16.0 x64 엔진이 모두 설치되어 있어야합니다. 그렇게하면 Vstudio는 "AnyCPU"컴파일 시간에 x32 및 x64 엔진을 모두 볼 수있었습니다. 공급자 연결 문자열을 x32 작업의 경우 ACE.OLEDB.12.0으로, x64 작업의 경우 ACE.OLEDB.16.0으로 변경할 수 있습니다. 둘 다 잘 작동했습니다.

x86 빌드 설정을 사용하려면 2020 년 1 월에 Office 365 x32에서 작동 하도록 2010 x32 데이터베이스 엔진과 ACE.OLEDB.12.0 연결 문자열 공급자 및 명시 적 x86 빌드 설정이 있어야합니다.


2

Excel 파일을 읽을 때 비슷한 문제가 있습니다.

문제의 역사 :

최근 메모리 요구 사항으로 인해 응용 프로그램을 32 비트에서 64 비트로 마이그레이션했습니다. 이를 위해 Windows 7을 32 비트에서 64 비트로 마이그레이션했습니다. 그러나 여전히 컴퓨터에 32 비트 사무실을 설치했습니다.

이 때문에 Excel 데이터를 응용 프로그램으로 가져 오는 동안이 문제가 발생했습니다.

해결책,

http://www.microsoft.com/en-us/download/details.aspx?id=13255 의 64 비트 버전을 다운로드하여 다음 과 같이 인수로 설치했습니다.

AccessDatabaseEngine_x64.exe / passive

코드를 변경하지 않으면 문제가 해결됩니다.

노트 :

64 비트 OS 및 64 비트 사무실에서이 수정 없이는 기능이 제대로 작동했습니다. 이 수정은 32 비트 사무실이 설치된 64 비트 OS에서 응용 프로그램이 64 비트로 실행되는 동안에 만 필요합니다.


그러나 Microsoft는이 솔루션에 반대합니다. 이 수정으로 인해 다른 Office 프로그램에서 왜곡이 발생하는 클라이언트는 거의 없습니다.
Rahul Techie


1

나는 다른 사람들이 제시 한 지시를 따랐다. 이 패치 설치, 해당 패치 및 Microsoft Access Database Engine 2010 설치

내 문제는 내 컴퓨터의 두 사이트에서 동일한 라이브러리 (linq2sql)를 사용하고 있다는 것입니다. 1은 작동하지만 1은 작동하지 않습니다.

결국 나는 작동하지 않는 사이트에 대한 apppool의 고급 설정에서 "32 비트 응용 프로그램을 활성화"해야한다는 것을 알았습니다.

이제 모든 것이 잘 작동합니다.


1

또한이 단계를 시도 할 수 있습니다

SQL Server에서 1. 하나의 데이터베이스를 엽니 다. 2. 'Server Obtect'옵션에서 3.Clic 3. 'Linked Servers'에서 4. 4. 'Providers'에서 5. 5. Microsoft.ACE.OLEDB.12.0 '의 복제 6. 모든 옵션을 선택 취소하고 닫습니다


1

웹 애플리케이션을 위해 서버에 AccessDatabaseEngine 을 설치해야 합니다.


1

나는 같은 문제가 있었지만이 경우 microsoft-ace-oledb-12-0-provider 가 이미 내 컴퓨터에 설치되어 있고 개발 된 다른 응용 프로그램에서 정상적으로 작동합니다.

해당 응용 프로그램과 문제가있는 응용 프로그램의 차이점은 이전 응용 프로그램이 " 로컬 IIS " 에서 실행되고 오류가 발생한 응용 프로그램은 " IIS Express (Visual Studio에서 실행)"에 있다는 것입니다. 그래서 내가 한 일은

  1. 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 속성으로 이동
  3. 오른쪽의 웹 탭으로 이동하십시오.
  4. 서버에서 로컬 IIS를 선택하고 가상 디렉토리 작성 단추를 클릭하십시오.
  5. 응용 프로그램을 다시 실행하면 제대로 작동합니다.

1

컴퓨터에 Microsoft Access Database Engine 2010 재배포 가능 패키지가 이미 설치되어 있지만 여전히 Microsoft ACE OLEDB Provider를 받고있었습니다 오류가 발생했습니다.

그런 다음 최근에 Office 2016으로 업그레이드 한 것을 기억 했으므로 Microsoft Access Database Engine 2010 재배포 가능 패키지를 다시 설치해야 할 수도 있습니다 . 그리고 그것은 내 컴퓨터의 문제를 해결했습니다.

따라서 다른 버전의 MS Office로 업그레이드했거나 MS Office를 복구 / 재설치 한 경우 다른 수정 프로그램을 찾는 데 시간을 낭비하기 전에 Microsoft Access Database Engine 2010 재배포 가능 패키지 를 다시 설치 하십시오 . 행운을 빕니다!


1

1.) ConnectionStrings.com으로 연결 문자열 확인 .

2.) 올바른 데이터베이스 엔진이 설치되어 있는지 확인하십시오. 이것이 나를 도와주는 두 개의 데이터베이스 엔진입니다.

재배포 가능한 Microsoft Access Database Engine 2010

2007 Office System 드라이버 : 데이터 연결 구성 요소

3.) 빌드 대상 플랫폼에 "모든 CPU"문제가있을 수 있으며 "X86"(속성, 빌드, 플랫폼 대상)이어야합니다.


'x86'뿐만 아니라 'x64'와 같은 'Any CPU'로 모든 플랫폼에서 실행할 수 있습니다. 아래의 전체 답변보기 : stackoverflow.com/a/32760211/3637582
Merav Kochavi

좋아, 나는 그것이 사실이라고 생각하지 않는다 ... 그래서 누군가의 빌드 대상 플랫폼이 문제의 일부가 될 수 있다고 언급 할 가치가있다.
u8it

1

ASP.NET 응용 프로그램에서 ACE를 사용하려고 할 때이 오류가 발생하면 가장 큰 원인은 32 비트 버전 중 하나를 설치 한 것입니다. 기본적으로 64 비트 운영 체제의 IIS는 64 비트 작업자 프로세스에서 응용 프로그램을 실행합니다. 64 비트 프로세스는 32 비트 DLL을로드 할 수 없습니다. ACE 공급자를 호출하면 64 비트 프로세스에서 64 비트 DLL을 찾습니다. 존재하지 않으면 여기에 나타난 오류 메시지가 나타납니다.

이 경우 두 가지 옵션이 있습니다. 먼저 2010 64 비트 버전을 설치할 수 있습니다. 2007 32 비트 버전이 설치되어 있으면 2010 64 비트 버전을 함께 설치할 수 있습니다. 2010의 32 비트 버전이 설치되어있는 경우이를 제거하고 64 비트 2010 버전을 다운로드하여 설치해야합니다. 32 비트 및 64 비트 버전의 2010 공급자를 동시에 설치할 수는 없습니다. 개발 컴퓨터에서 설치를 수행하는 경우 기존 Office 설치의 비트가 제한 될 수도 있습니다.

두 번째 옵션은 IIS에서 응용 프로그램 풀을 변경하여 32 비트 응용 프로그램을 활성화하는 것입니다. 정식 버전의 IIS를 사용하는 경우 관리 도구를 사용하여이를 수행 할 수 있습니다 (제어판»관리 도구»인터넷 정보 서비스 (IIS) 관리자).

자세한 내용은 아래 링크 를 참조하십시오


1

Excel 파일에서 MS-SQL로 데이터를 가져올 때이 오류가 발생했습니다. 공급자가 이미 설치되어 (64 비트) 이것이 작동하지 않는 이유에 놀랐습니다. 그래서 내가 사용한 모든 것은 여기에 사용 된 가져 오기 / 내보내기 응용 프로그램, 즉 .EXE를 찾는 것입니다. 그리고 나는 그것을 발견했다.

C : \ Program Files \ Microsoft SQL Server \ 130 \ DTS \ Binn \ DTSWizard.exe

그런 다음 .exe를 직접 실행하여 데이터 가져 오기를 수행했습니다. 그리고 효과가있었습니다!


흠, 나는 거기에 몇 가지 버전이 있었고 SSMS는 잘못된 버전을 사용해야합니다.
SteveCav

1

이것은 지금 나를 위해 일했습니다.

  1. 이 페이지 를 방문 하여 컴퓨터에 적합한 패키지 (AccessDatabaseEngine.exe 또는 AccessDatabaseEngine_X64.exe)를 다운로드 하십시오.
  2. 설치하십시오.
  3. Enjoye ... 코드가 작동합니다 ...

그러나 응용 프로그램 패키지에는 다음 솔루션을 사용할 수 있습니다.

  1. "C : \ Program Files (x86) \ Common Files \ microsoft shared"또는 "C : \ Program Files \ Common Files \ Microsoft Shared"로 이동하여 "OFFICE14"디렉토리를 패키지 파일의 동일한 위치에 두십시오.

또는

  1. 설치 패키지에 두 개의 프로젝트 (항목 1)를 첨부하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.