「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 2017

3
@ShaulBehrは良かったのですが、ClosedXmlは.xlsxファイルではなく.xlsxファイルに対してのみ機能します
Jimmy

2
SQL Serverにインポートする場合は、ssmsからこのクエリを実行できます。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 2018

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データベースエンジン2010再頒布可能パッケージをダウンロードする必要がありました。microsoft.com / en-in / download / details.aspxid = 13255 MS Office 2013を使用しています。正しい方向に向けていただきありがとうございます。
Sizons 2015年

5
アクセスデータベースエンジンと2007 Office systemドライバーをインストールする必要がありました。それを機能させるには、データ接続コンポーネント(microsoft.com/en-us/download/confirmation.aspx?id=23734)をここにインストールしてください。
Chris

6
私の状況では、すべてが正常に機能していましたが、突然、このエラーが発生し始めました。これを引き起こすために何が起こったのでしょうか?コードは変更されていません。
eetawil 2016年

21
私の場合、アーキテクチャに合わせて「すべてのCPU」からx64に切り替える必要がありました。
ロブセジウィック2016年

2
Jack the Ripperは、コメントではなく、回答自体で提供されるソリューションを指します。インストールすると2007 Office System Driver: Data Connectivity Componentsすぐに問題が解決しました。
シルクファイア2016

156

「Microsoft.ACE.OLEDB.12.0」プロバイダーの使用を可能にする「Microsoft Access Database Engine 2010 Redistributable」の64ビットバージョンは、こちらから入手できます。http
//www.microsoft.com/en-us/ download / details.aspx?id = 13255

承認された回答からのダウンロードを使用する場合は、@ backtestbroker.comで指摘されているように、x86用にビルドする必要があります。


18
VS 2012を使用している場合は、プロジェクトの[プロパティ] >> [ビルド] >> [一般構成]で[32ビット優先]チェックボックスがオフになっていることも確認してください。
devstruck 2014

3
私はVS 2008を使用しています(質問はありません)。このソリューションは、post_erasmusのヒントを読み、[プロパティ] >> [ビルド] >> [アプリケーションの一般的な構成]で[プラットフォームターゲット]をx64に設定するまで機能しませんでした。ソート、ありがとう!
リソース

1
この回答のリンクから、32ビットバージョンをダウンロードしてインストールすることもできます。私はWindows 7 64ビットを使用していますが、Visual Studio 2013のIIS Expressはデフォルトで32ビットモードで実行され、すでにいくつかのOffice 2013コンポーネントが32ビットでインストールされているため、32ビットインストールが必要です。
Eric Barr 2016年

1
この回答では、アプリケーションプールの[32ビットアプリケーションを有効にする]もFalseに設定する必要があります。
iowatiger08 2016年

1
これは私の問題の解決に役立ちました。私のVS 2019アプリは、任意のCPUを使用してコンパイルされ、x64ライブラリが生成されます。32ビットバージョンのOffice 2013がインストールされていたため、x64 Access DBエンジンをインストールできませんでした。x64バージョンのOfficeをインストールした後、x64エンジンをインストールでき、すべてが機能するようになりました。DLL地獄は生き続けています。
Mike Lowery

74

インストールできる接続を使用するアプリ(32/64ビット)に応じて

概要:

  • 2007〜2016年のすべてのオフィスには、プロバイダー "Microsoft.ACE.Oledb.12.0"が含まれています
  • アプリケーションアーキテクチャに応じて、適切なランタイムエンジンを選択します(32/64)6
  • 32ビットと64ビットの両方のシェルから powershell-commandを使用してプロバイダーを確認します。

    (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」バージョン


Nuget LinqToExcelを使用してVS2015でこのエラーが発生しました。結局、x64 ACEをインストールしたので、Any CPUをターゲットにするのではなく、明示的にx64(Configuration Manager)用にビルドする必要がありました。
subsci 2017

Powershellは、「Microsoft.ACE.Oledb.12.0」がすでにインストールされていることを示しました。ただし、Access 2007パッケージ(別名2007 Office System Driver:Data Connectivity Components)をインストールすると、問題が解決しました。すでに私のシステム上:Office 2016 Ent、Visual Studio 2017 Ent
SushiGuy

6
インストールされているバージョンを通知するPowerShellスクリプトは天才です!ありがとう@Bernhard
Rob Bowman

offtopicビットしかし、この単純なPowerShellは、あなたのODBCドライバのためである:Get-OdbcDriver | select Name,Platform
ベルンハルト

これは、32ビットアクセス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 2007のデータ接続コンポーネントであるにもかかわらず、Office 2010で機能する原因不明の回避策です。これが機能する理由はよくわかりませんが、機能することはほぼすべての場合に機能することが証明されています。2007 Office System Driver:Data Connectivity Componentsインストールする必要があります。このインストールはhttp://www.microsoft.com/download/en/confirmation.aspx?id=23734から入手でき ます

      このインストールが完了したら、アプリケーションを実行してみてください。これで問題が解決するはずです。

  • x64またはAnyCPUプラットフォーム構築されアプリケーションを実行しようとしている場合は、まずx86プラットフォームで期待どおりに実行されることを確認することをお勧めします。そのx86プラットフォームで実行されない場合は、最初の部分の手順を実行し、期待どおりに実行されることを確認します。

    私は、OLEDBデータベースドライバーを含むMS Accessドライバーがx86プラットフォームでのみ機能し、x64またはAnyCPUプラットフォームで互換性がないことを読みました。しかし、これは正しくないようです。x86のビルド時にアプリケーションが実行されていることを確認してから、パッシブフラグを使用してAccessデータベースエンジンをインストールしました。

    1. 最初にファイルをローカルにダウンロードします。ここからインストールをダウンロードできます。http//www.microsoft.com/en-us/download/details.aspx?id = 13255
    2. '/ passive'フラグを指定してコマンドプロンプトを使用してインストールします。 コマンドプロンプトで、次のコマンドを実行します。 'AccessDatabaseEngine_x64.exe / passive'

    これらの2つのステップの後、x64またはAnyCPUビルド構成でビルドした後、アプリケーションを実行することができました。これで問題が解決したようです。

注:手順の順序は違いがあるようですので、それに応じてください。


5
32ビットアプリケーションから64ビットアプリケーションに切り替えると、それが動作しなくなるという問題がありました。手順の2番目の部分は完全に機能します。/パッシブフラグでも32ビットのMicrosoft Officeをインストールすることができます。
フレディ

1
ヒント:AccessDatabaseEngine_x64.exeをフォルダーに抽出して、AceRedist.msiおよびData.cabファイルを取得します。管理者モードでcmdプロンプトを開き、を実行しAceRedist.msi /passiveます。
Jeremy Thompson

1
どうもありがとう。最初のオプションは私のために働いた。32ビット版のOfficeをアンインストールするのにどれほどの手間がかかったかを覚えています。64ビット版のOfficeをインストールした後でないと、この問題は以前に修正されていました。しかし、この64ビットのオフィスコンポーネントが代わりに魔法をかけました。
ビキ

2点あるので修正しました。どうもありがとうございました。これをmicrosoft.com/download/en/confirmation.aspx?id=23734にインストールする必要があります。
SENA

33

構成マネージャーダイアログボックスでビルドを「x86」から「すべての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を選択すると実際に役立ちます。
既知

25

MSドライバーをインストールしましたが、それでも動作しませんでした。次に、この問題を解決したこのブログ投稿を見つけました。そこで読んでください。そうでなければ、TLDR要約としてこれらの2つの画像(その投稿からリンクされている)を使用してください。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


これを私の投稿として投稿しようとしていました。これが私の問題でした。私のソリューションの1つのプロジェクトがx86でコンパイルされたため、このIIS設定を昨日変更するので、プログラム全体を32ビットとしてクラス化すると想定しています。
リー

私のサーバーは@ 64ビットを実行していますが、インストールされているMS Officeコンポーネントは32ビットです。これで私の問題は解決しました。ありがとうございました。
MarceloBarbosa 2017年

動作させるのに信じられないほど難しいこと:(、これをpowershellでスクリプト化して、ある種の自動サーバーセットアップスクリプトに統合することができるのではないでしょうか?
David Rogers

@DavidRogersと思うかもしれませんが、私はPSの専門家ではないので、私にそれを見ないでください!;-)
Shaul Behr 2017

@ShaulBehrうまくいけば、これは他の人に洞察を提供します、私が使用した特定のコマンドは次のとおりでした(昇格したpowershell / cmdウィンドウで): "C:\ Windows \ System32 \ inetsrv \ ./ appcmd set apppool /apppool.name:YOURAPPPOOLNAMEHERE / enable32BitAppOnWin64:true "
デビッドロジャース

16

64ビットを使用しているが、AccessDatabaseEngineをインストールしても問題が解決しない場合は、この投稿を参照してください。問題が解決しない場合は、してください。問題は解決しました。

つまり、この AccessDatabaseEngineをインストールする必要があります


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ビットバージョンをインストールしてから、このページからAccessDatabaseEngine.exeの32ビットバージョンを インストールしました。http://www.microsoft.com/en-us/download/details.aspx?

しかし、それでも喜びはありません。

次に、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 .0(15)Microsoft.ACE.OLEDBではありません。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シートを読み取ろうとしています。SharePointドキュメントライブラリに保存されているExcelファイルで、サーバーにExcelがインストールされていない。Windows Server 2008 R2を使用しています。Office System Driver:Data Connectivity Componentsをインストールしましたが、クエリを実行してもMicrosoft.ACE.OLEDBが表示されません。あなたはそれについて考えがありますか?そして何か提案?前もって感謝します。
doganak 14

3
答えを見つけました。システム管理者にMS Access Database Engineのインストールを依頼しました。彼はx86バージョンをインストールしていました。もう一度PowerShell x86でクエリを実行すると、ACE.OLEDBが表示されました。
doganak 14

素晴らしい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ビット相当(AccessDataBaseEngine.exe)をインストールしました。その後、私は最終的にVisual Studioの2019年からAccessデータベースに接続することができました
VolkanOzcan

10

Officeインストールのビット数に基づいて、ソリューションプラットフォームを「任意のCPU」から「x86」または「x64」に変更する必要があります。

手順は以下のとおりです。

  1. ソリューションエクスプローラーでソリューションファイルを右クリックします。 ここに画像の説明を入力してください

    1. 構成マネージャーをクリックします。
    2. [アクティブプラットフォーム]ドロップダウンをクリックします。x86がすでにある場合はそれを選択し、それ以外の場合は[新規]をクリックします。 ここに画像の説明を入力してください

    3. 新しいプラットフォームのドロップダウンからx86またはx64を選択します。 ここに画像の説明を入力してください

アプリケーションをコンパイルして実行します。


6

インストールされている「AccessDatabaseEngine」がまだ役に立たない場合は、以下が解決策です。

Active Solution Platformを「Any CPU」から「x86」に変更する必要があります。

OLEDBプロバイダーがローカルマシンに登録されていない

CodeProject.comから


「x86」だけでなく、「x64」と同様に「任意の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ビットバージョンを使用します。ツール»オプション»プロジェクトとソリューション»Webプロジェクト»一般に移動し、

「64ビットバージョンのIIS ExpressをWebサイトとプロジェクトに使用する」

そのオプションをチェックしてから、プロジェクトのプラットフォームターゲットを「任意のCPU」に戻しました(トラブルシューティングプロセスのどこかでx86に設定しました)と、エラーを克服できました。


1
ありがとう、他のほとんどの答えは32ビットに下げることですが、これは64ビットに進むのに役立ちます。
illinoistim 2016年

本当にありがとうございました。
Manoj Kalluri

6

Webプロジェクトをデバッグする場合は、IIS Expressを確認してください場合は、プロジェクトの設定に応じて、が32ビットまたは64ビットで実行されしてください。

後藤

ツール>オプション>プロジェクトとソリューション> Webプロジェクト

そこから、「64ビットバージョンのIIS Expressを使用する...」をオンまたはオフにします。


1
何時間も他のソリューションを試してみて、あなただけが修正してください!感謝
エルナルドゴンザレス

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 'プロバイダーがローカルマシンに登録されていません"に対して提案した解決策エラー『は、x86』に『どれCPU』からアクティブソリューションプラットフォームを変更することです。

これらの手順を実行してソリューションを再構築し、EXEを取得してネットワークに配置すると、すべてがWindows 7 64ビットマシンでスムーズに動作しました。


x86だけでなく、任意のCPUとしても、任意のプラットフォームで実行できます。以下の私の回答を参照してください:stackoverflow.com/a/32760211/3637582
Merav Kochavi '11 / 10/05

3

SSMS 2014を使用してExcelファイル(xlsx)からSQL Server DBにデータをインポートしようとすると、この問題が発生しました。

2007 Office Systemのドライバ:データ接続コンポーネントのインストールは私のためにトリックをしました。


...それでもうまくいかない場合は、「データソースの選択」画面のドロップダウンリストから別の「Excelバージョン」を選択してみてください。 stackoverflow.com/a/56171883/283895
tgolisch

@Taran Linkは使用できません
evry1falls

これはファイルのようですが、download.cnet.com
。– Taran

3

私もこれと同じ問題に直面しました。ソリューションのプロパティに移動し、Any CPUをx86に変更します。これでうまくいくと思います。


3

この2つの手順を実行します。1.このメニューで:プロジェクト-> yourprojectプロパティ...->ビルド:「32ビット優先」のチェックを外します2.接続文字列:次のように拡張プロパティの前後にcuotesを書き込みます:Extended Properties = ' Excel 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データベースエンジン2010再頒布可能パッケージをインストールしているときに、[32ビットを優先する]をオフにすると動作するようです。
IT延滞

「Prefer 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)Windows 10 x64、Office 365 x64、/ passive引数を使用してインストールされたAccessDatabaseEngine_x64 2016、/ passive引数を使用してインストールされたAccessDatabaseEngine 2010(32ビット)、AnyCPUに設定されたVStudioビルド設定、次の接続文字列:Provider = Microsoft.ACE.OLEDB.16.0; データソース= D:... \ MyDatabase.accdb

(3-x32のみ)Windows 10 x64、Office 365 x32、/ passive引数でインストールされた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でオプションを使用すると、インストールが簡単になります。そのヒントを投稿した人にクレジットを!

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 x1でOffice 365 x32と連携するために、2010 x32データベースエンジンとACE.OLEDB.12.0接続文字列プロバイダー、および明示的なx86ビルド設定が必要です。


2

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ビットオフィスでは、この修正を行わなくても機能は正常に動作していました。この修正が必要なのは、アプリケーションが64ビットOSで実行されており、32ビットのオフィスがインストールされている場合のみです。


しかし、マイクロソフトはこのソリューションに反対しています。この修正が原因で、他のOfficeプログラムに歪みが見られるクライアントはほとんどありません。
Rahul Techie、2015年


1

私は他の人が示した指示に従いました。このパッチのインストール、そのパッチとMicrosoft Accessデータベースエンジン2010のインストール。

私の問題は、自分のマシンの2つのサイトで同じライブラリ(linq2sql)を使用していることでした。1つは機能し、1つは機能しません。

結局、非稼働サイトのアプリプールの詳細設定で「32ビットアプリケーションを有効にする」必要があることがわかりました。

今はすべてうまくいきます。


1

これらの手順も試すことができます

SQL Serverで、1つのデータベースを開きます。2。オプション 'Server Obtect'で2.Clic 'リンクサーバー'で3.Clic 'プロバイダー'で4.Clic 5.'Microsoft.ACE.OLEDB.12.0 'でClic Rigth 6.すべてのオプションのチェックを外して閉じます


1

WebアプリケーションのサーバーにAccessDatabaseEngineをインストールすることを忘れないでください。


1

私は同じ問題を抱えていましたが、この場合はmicrosoft-ace-oledb-12-0-providerが既に私のマシンにインストールされており、開発された他のアプリケーションで正常に動作しています。

それらのアプリケーションと問題があったアプリケーションの違いは、古いアプリケーションが「ローカルIIS」で実行されていたのに対し、エラーのあるアプリケーションは「IIS Express(Visual Studioから実行)」で実行されていたということです。だから私がしたことは-

  1. プロジェクト名を右クリックします。
  2. プロパティに移動
  3. 右側のWebタブに移動します。
  4. [サーバー]で[ローカルIIS]を選択し、[仮想ディレクトリの作成]ボタンをクリックします。
  5. アプリケーションを再度実行すると、うまくいきました。

1

私が持っていたMicrosoft Accessデータベースエンジン2010再頒布は、すでに私のマシンにインストールされているが、まだ受信していたマイクロソフトACE OLEDBプロバイダをエラーを。

次に、最近Office 2016にアップグレードしたことを思い出したので、Microsoft Access Database Engine 2010 Redistributableを再インストールする必要があるかもしれません。そして、それは私のマシンの問題を修正しました。

そのため、別のバージョンのMS Officeにアップグレードした場合や、MS Officeを修復/再インストールした場合でも、他の修正を見つけるのに時間を費やす前に、Microsoft Access Database Engine 2010再頒布可能パッケージを再インストールしてみてください。幸運を!


1

1.)ConnectionStrings.comで接続文字列を確認します

2.)正しいデータベースエンジンがインストールされていることを確認します。これらは私を助けた2つのデータベースエンジンでした。

Microsoft Accessデータベースエンジン2010再頒布可能

2007 Office systemドライバー:データ接続コンポーネント

3.)ビルドターゲットプラットフォームが「Any CPU」の場合、問題が発生する可能性があります。「X86」(プロパティ、ビルド、プラットフォームターゲット)である必要があります。


「x86」だけでなく、「x64」と同様に「任意のCPU」として、任意のプラットフォームで実行できます。以下の完全な回答を参照してください:stackoverflow.com/a/32760211/3637582
Merav Kochavi

わかりました、それは私には当てはまらないと思います...したがって、誰かのビルドターゲットプラットフォームが問題の一部である可能性があることは、言及する価値があります。
u8it 2017年

1

ASP.NETアプリケーションからACEを使用しようとしたときにこのエラーが発生した場合、最も可能性の高い原因は、32ビットバージョンのいずれかをインストールしたことです。既定では、64ビットオペレーティングシステムのIISは、64ビットワーカープロセスでアプリケーションを実行します。64ビットプロセスは32ビットDLLをロードできません。ACEプロバイダーへの呼び出しが行われると、64ビットプロセスは64ビットDLLを見つけようとします。存在しない場合は、ここに移動したエラーメッセージが表示されます。

この場合、2つのオプションがあります。まず、2010 64ビットバージョンをインストールできます。2007 32ビットバージョンをインストールしている場合は、それに沿って2010 64ビットバージョンをインストールできます。2010の32ビットバージョンがインストールされている場合は、アンインストールして、代わりに64ビットの2010バージョンをダウンロードしてインストールする必要があります。2010プロバイダーの32ビットバージョンと64ビットバージョンの両方を同時にインストールすることはできません。開発マシンでインストールを実行している場合、既存のOfficeインストールのビット数によって制約を受ける可能性もあります。

2番目のオプションは、32ビットアプリケーションを有効にするようにIISのアプリケーションプールを変更することです。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. お楽しみください...コードが機能しました...

ただし、アプリケーションパッケージでは、次のソリューションを使用できます。

  1. 「C:\ Program Files(x86)\ Common Files \ microsoft shared」または「C:\ Program Files \ Common Files \ Microsoft Shared」に移動し、「OFFICE14」ディレクトリをパッケージファイルと同じ場所に配置します。

または

  1. インストールパッケージに(item1の)2つのプロジェクトをアタッチします。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.