버튼 클릭 이벤트에서 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입니다.
음, 설치해야합니다. 찾고있는 사람 :
2007 Office System Driver: Data Connectivity Components
즉시 문제를 해결했습니다. - silkfire
'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)에 따라 다름
개요:
powershell 명령을 사용하여 공급자를 확인하십시오.32 비트 및 64 비트 쉘 모두:
(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"
및 Office 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"버전
Get-OdbcDriver | select Name,Platform
- Bernhard
구성 관리자 대화 상자에서 "x86"에서 "모든 CPU"로 빌드를 변경했을 때 Visual Studio 2010에서이 오류 / 예외가 발생했습니다. 이 OLEDB 데이터베이스 드라이버는 x86에서만 작동하며 64 비트 호환되지 않습니다. 빌드 구성을 x86으로 다시 변경하면 문제가 해결되었습니다.
가장 먼저 확인해야 할 것은 응용 프로그램의 빌드 구성입니다.
당신이 가지고 있다면x86 플랫폼에서 프로젝트 구축, 그 다음에는 문제를 해결하면 다음 패키지를 설치해야합니다. 기계:
'Microsoft.ACE.OLEDB.12.0'공급자를 사용하려면Microsoft Access 데이터베이스 엔진 2010 재배포 가능 파일을 설치하십시오.첫째,이 설치는 다음에서 제공됩니다.http://www.microsoft.com/download/en/details.aspx?id=13255.
설치가 완료되면 응용 프로그램을 실행 해보십시오. 위대한 문제를 해결하고 그렇지 않은 경우 2 단계로 진행합니다.
이 다음 단계는 설명 할 수없는 해결 방법이며 Office에서 사용할 수 있습니다. 2010 Office 2007의 데이터 연결 구성 요소 임에도 불구하고이 기능이 왜 작동하는지 잘 모르겠습니다.하지만 대부분의 경우 작동하는 것으로 입증되었습니다. 너는 ~해야 해.2007 Office System 드라이버 설치 : 데이터 연결 구성 요소이 설치는 다음에서 제공됩니다.http://www.microsoft.com/download/en/confirmation.aspx?id=23734.
이 설치가 완료되면 응용 프로그램을 실행 해보십시오. 그러면 문제가 해결됩니다.
당신이x64 또는 AnyCPU로 작성된 응용 프로그램 플랫폼먼저 예상대로 실행되는지 확인하는 것이 좋습니다. x86 플랫폼에서 그것이 그 밑에 달리지 않는 경우에 x86 플랫폼에서 첫 번째 부분의 단계를 수행하고 예상대로 실행됩니다.
나는 OLEDB 데이터베이스를 포함한 MS Access 드라이버를 읽었습니다. 드라이버는 x86 플랫폼에서만 작동하며 아래에서 호환되지 않습니다. x64 또는 AnyCPU 플랫폼 그러나 이것은 사실이 아닌 것처럼 보입니다. 나는 x86을 빌드 할 때 내 응용 프로그램이 실행되고 있는지 확인한 다음 passive 플래그를 사용하여 Access 데이터베이스 엔진을 설치했습니다.
이 두 단계를 거친 후 건물을 만든 후 내 응용 프로그램을 실행했습니다. x64 또는 AnyCPU 빌드 구성. 이것은 내 문제를 해결하는 것으로 보였다.
참고 : 단계의 순서에 따라 차이가있는 것 같습니다. 따라서 적절하게 따라하십시오.
AceRedist.msi /passive
. - Jeremy Thompson
MS 드라이버를 설치했지만 여전히 작동하지 않습니다. 그런 다음 찾았습니다.이 블로그 게시물그 문제를 해결했습니다. 거기서 읽으십시오. 그렇지 않으면 TLDR sumamary로이 두 이미지를 연결하십시오 :
이것에 의해 아직도 영향을받는 모든 사람들을 위해서.
오류가 발생했습니다 ...
OLEDB error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine."
... OP, Shailesh Sahu에 의해 기술 된대로.
나는 64 비트 윈도우 7을 가지고있다.
내 문제가있다.PowerShell스크립트를 사용하지만 OP의 게시물과 비슷한 연결 문자열을 사용하고 있으므로 C #, PowerShell 및 "Microsoft.ACE.OLEDB"드라이버에 의존하는 다른 언어에도 내 결과가 적용될 수 있기를 바랍니다.
나는이 MS 포럼 스레드에 대한 지침을 따랐다.http://goo.gl/h73RmI
나는 처음 설치를 시도했다.64 비트버전을 설치 한 다음32 비트이 페이지에서 AccessDatabaseEngine.exe 버전http://www.microsoft.com/en-us/download/details.aspx?id=13255
그러나 여전히 기쁨은 없습니다.
나는 아래의 코드를 실행했다.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 있습니다.15 명Microsoft.ACE.OLEDB가 아닌 .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 버전이 설치되어 있는지 확인하고 적절한 버전 번호를 사용할 수 있습니다.
64 비트를 사용 중이지만 AccessDatabaseEngine을 설치 한 후에도 여전히 문제가 발생하면이 포스트, 그것은 나를 위해 문제를 해결했습니다.
즉, 설치해야합니다.이AccessDatabaseEngine
설치된 "AccessDatabaseEngine"이 여전히 도움이되지 않으면 아래 해결 방법이 있습니다 :
Active Solution Platform을 "Any CPU"에서 "x86"으로 변경해야합니다.
CodeProject.com에서
syp_dino,
당신이 제안한대로 나를위한 해결책"Microsoft.ACE.OLEDB.12.0 '공급자가 로컬 컴퓨터에 등록되지 않았습니다"오류는 Active Solution Platform을 "모든 CPU"에서 "x86"으로 변경하는 것입니다.
이러한 단계를 수행 할 때 솔루션을 다시 빌드하고 EXE를 가져 와서 네트워크에 배치하면 모든 것이 Windows 7 64 비트 시스템에서 원활하게 수행됩니다.
이 기사의 단계에 따라 문제를 해결할 수있었습니다.http://www.mikesdotnetting.com/article/280/solved-the-microsoft-ace-oledb-12-0-provider-is-not-registered-on-the-local-machine
나를위한 핵심 포인트는 다음과 같습니다.
IIS로 디버깅 할 때,
기본적으로 Visual Studio는 32 비트 버전을 사용합니다. 이걸 바꿀 수있어. 도구»옵션»프로젝트로 이동하여 Visual Studio 내에서 솔루션»웹 프로젝트»일반
"웹 사이트 및 프로젝트에 IIS Express의 64 비트 버전 사용"
그 옵션을 확인한 후 내 프로젝트의 플랫폼 대상을 "모든 CPU"(문제 해결 프로세스의 어딘가에서 x86으로 설정 했음)로 다시 설정하면 오류를 극복 할 수있었습니다.
웹 프로젝트를 디버깅하는 경우미국 익스프레스프로젝트 설정에 따라 32 비트 또는 64 비트로 실행됩니다.
Goto
도구> 옵션> 프로젝트 및 솔루션> 웹 프로젝트
거기에서 'IIS Express의 64 비트 버전 사용 ...'을 선택 (또는 선택 취소)
SSMS 2014를 사용하여 Excel 파일 (xlsx)에서 SQL Server DB로 데이터를 가져 오려고 할 때이 문제가 발생했습니다.
그만큼2007 Office System 드라이버 : 데이터 연결 구성 요소설치는 저를위한 간계를했다.
Excel 파일을 읽을 때 비슷한 문제가 있습니다.
문제의 역사 :
우리는 최근에 메모리 요구 사항 때문에 32 비트에서 64 비트로 애플리케이션을 마이그레이션했습니다. 이를 위해 Windows 7을 32 비트에서 64 비트로 마이그레이션했습니다. 하지만 여전히 우리 기계에 32 비트 사무실을 설치했습니다.
왜냐하면 Excel 데이터를 응용 프로그램으로 가져 오는 동안이 문제가 발생했기 때문입니다.
해결책,
나는 64 비트 버전의http://www.microsoft.com/en-us/download/details.aspx?id=13255인수로 설치되고,
AccessDatabaseEngine_x64.exe / passive
코드를 변경하지 않으면 문제가 해결됩니다.
노트 :
64 비트 OS 및 64 비트 오피스에서이 기능을 사용하지 않으면 내 기능이 정상적으로 작동합니다. 이 수정은 32 비트 Office가 설치된 64 비트 OS에서 64 비트 응용 프로그램을 실행하는 동안에 만 필요합니다.
다운로드 & amp; 다음 Access DB 엔진을 설치하십시오 (컴퓨터 구성에 따라 X86 또는 X64 :).
https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255
먼저 시스템에 설치된 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
나는 다른 사람들이 제시 한 지시를 따랐다. 이 패치 설치, 해당 패치 설치 및 Microsoft Access 데이터베이스 엔진 2010.
내 문제는 내 컴퓨터의 2 개 사이트에서 동일한 라이브러리 (linq2sql)를 사용하고 있다는 것이 었습니다. 1 작품 1 작품.
결국 나는 내 비 작동 사이트에 대한 apppool의 고급 설정에서 "32 비트 응용 프로그램을 활성화"해야한다는 것을 알게되었습니다.
모든 것이 이제는 잘됩니다.
이 단계를 시도해 볼 수도 있습니다.
SQL Server에서, 1. 하나의 데이터베이스 열기 2. '서버 Obtect'옵션의 Clic 3. '연결된 서버'의 내용 4. '제공자'의 선택 5.Clic Rigth in 'Microsoft.ACE.OLEDB.12.0' 6. 모든 옵션을 선택 취소하고 닫습니다.
설치하는 것을 잊지 마십시오.AccessDatabaseEngine웹 응용 프로그램 용 서버.
나는 같은 문제를 가지고 있었지만이 경우에microsoft-ace-oledb-12-0-provider내 컴퓨터에 이미 설치되어 있으며 다른 응용 프로그램이 잘 작동합니다.
그 응용 프로그램과 내가 가진 문제점 사이의 차이점은 오래된 응용 프로그램이 "현지 미국"오류가있는 사람은"미국 익스프레스(Visual Studio에서 실행 "). 그래서 내가 한 일은 -
- 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하십시오.
- 속성으로 이동
- 오른쪽의 웹 탭으로 이동하십시오.
- 서버에서 로컬 IIS를 선택하고 가상 디렉터리 생성 버튼을 클릭하십시오.
- 응용 프로그램을 다시 실행하면 효과가 있습니다.
나는 가지고 있었다.Microsoft Access 데이터베이스 엔진 2010 재배포 가능 파일이미 내 컴퓨터에 설치되었지만 여전히Microsoft ACE OLEDB 공급자오류.
그런 다음 최근에 Office 2016으로 업그레이드했음을 상기 했으므로 다시 설치해야 할 수도 있습니다.Microsoft Access 데이터베이스 엔진 2010 재배포 가능 파일. 그리고 그것은 내 컴퓨터의 문제를 해결했습니다.
따라서 MS Office의 다른 버전으로 업그레이드하거나 MS Office를 수리 / 재설치 한 경우 다시 설치하십시오Microsoft Access 데이터베이스 엔진 2010 재배포 가능 파일다른 수정 프로그램을 찾는 데 시간을 낭비하기 전에. 행운을 빕니다!
1.) 연결 문자열을 다음과 같이 확인하십시오.ConnectionStrings.com.
2.) 올바른 데이터베이스 엔진이 설치되어 있는지 확인하십시오. 이것들은 나를 도왔던 두 개의 데이터베이스 엔진이었습니다.
Microsoft Access 데이터베이스 엔진 2010 재배포 가능 파일
2007 Office System 드라이버 : 데이터 연결 구성 요소
3.) 빌드 타겟 플랫폼에 "Any CPU"라는 문제가있을 수 있습니다. "X86"(속성, 빌드, 플랫폼 타겟) 일 필요가 있습니다.
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 설치의 비트 수에 따라 제약을받을 수도 있습니다.
두 번째 옵션은 32 비트 응용 프로그램을 사용하도록 IIS의 응용 프로그램 풀을 변경하는 것입니다. 정식 버전의 IIS를 사용하는 경우 관리 도구를 사용하여 제어판 (관리 도구»인터넷 정보 서비스 (IIS) 관리자)을 사용할 수 있습니다.
자세한 내용은 아래를 참조하십시오.링크
나는이 같은 문제에 직면했다. 솔루션 등록 정보로 가서 모든 CPU를 x86으로 변경하십시오.
그것은 당신이 설치 한 사무실에 따라 다릅니다. x64 비트 사무실이 있다면 x64로 실행해야 응용 프로그램을 컴파일해야합니다. x36을 실행하려면 x86을 설치해야합니다. 위의 모든 솔루션은 있지만 아무도 내가 사무실 x64 비트를 가졌다는 것을 깨닫고 x64로 응용 프로그램을 만들어 작업했습니다.
Excel 파일에서 MS-SQL로 데이터를 가져올 때이 오류가 발생했습니다. 공급자가 이미 설치되어 있었고 (64 비트) 이것이 작동하지 않는 이유가 놀랐습니다. 그래서 내가 한 것은 가져 오기 / 내보내기 응용 프로그램 (예 : .EXE)을 찾는 것입니다. 그리고 나는 그것을
C : \ Program Files \ Microsoft SQL Server \ 130 \ DTS \ Binn \ DTSWizard.exe
그런 다음 .exe를 직접 실행하여 데이터 가져 오기를 수행했습니다. 그리고 효과가있었습니다!
내가 다른 컴퓨터에서 그것을 해결하는 방법 :
필자는 Office 2010을 가지고 있지 않기 때문에 Access Database를 가지고 있지 않은 Visual Studio 2012와 함께 Windows 7 32 비트 시스템을 가지고 있습니다. Windows 7 64 비트 시스템과 동일한 소스를 복사했습니다.
그래서, 위의 제안에 따라 AccessDatabaseEngine을 다운로드 한 후이 Windows 7 32 비트 시스템에 AccessDatabaseEngine을 설치했습니다. 모든 것이 잘 작동했습니다.
나는 이미 Access 2010을 이미 포함하고있는 Office 2010이있는 Windows 7 64 비트 컴퓨터에서 여전히 문제가있었습니다.이 컴퓨터에서 해결 된 방식은 PROJECT로 이동하여 속성을 선택하고 Platform 대상에서 임의의 CPU를 선택했는지 확인합니다. 32 비트. 재 컴파일 / 빌드 및 Microsoft.ACE.OLEDB.12.0 '공급자가 로컬 컴퓨터에 등록되지 않았다는 메시지가 사라졌습니다.
이것은 나를 위해 지금 일했다.
그러나 응용 프로그램 패키지의 경우 다음 솔루션을 사용할 수 있습니다.
또는