317

ボタンクリックイベントで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です。


  • ただ接線的なコメント:Excelファイルを読むためにOLEDBを使うことは非常に遅い、そしてあなたが発見したように、あなたのターゲットマシンに手動で追加のパッケージをインストールすることを必要とする。 (もちろん、質問は2011年に行われました。)ClosedXml(NuGetから入手可能)をそのまま使用してください。 - Shaul Behr
  • @ShaulBehrいいかもしれませんが、ClosedXmlは.xlsxファイルに対してのみ機能し、.xlsには機能しません。 - Jimmy
  • Sql Serverにインポートしている場合は、ssmsからこのクエリを実行できます。execute master.dbo.xp_enum_oledb_providersこれは、どのプロバイダを所有していると思われるかを示します。私はMicrosoft.ACE.OLEDB.16.0とMicrosoft.ACE.OLEDB.12.0の両方を持っていましたが、データをインポートしようとしたときに、ローカルコンピュータに登録されていないのと同じものになりました。 OPとして、Excel 16とExcel 2007の両方のファイル形式(それぞれoledb.16.0およびoledb.12.0)。この時点であなたの損失を減らしてマイクロソフトのソフトウェアをあきらめることは理にかなっています。 - user1040323

30 답변


407

まあ、あなたはそれをインストールする必要があります。あなたが探しています:


  • これらのコンポーネントをダウンロードしましたが、うまく機能しませんでした。MicrosoftAccessデータベースエンジン2010再配布可能ファイルをここからダウンロードする必要がありました。microsoft.com/en-in/download/details.aspx?id=13255MS Office 2013を使用しているからです。正しい方向を示してくれてありがとう。 - Sizons
  • アクセスデータベースエンジンと2007 Office System Driver:Data Connectivity Componentsをインストールする必要があります。microsoft.com/en-us/download/confirmation.aspx?id=23734それを働かせるために。 - Chris
  • 私の状況は、すべてがうまくいっていて、それから突然それがこのエラーを受け始めたことです。そうこれを引き起こすために何が起こり得たのでしょうか?コードは変更されていません。 - eetawil
  • 私の場合は、[Any CPU]から[Any CPU]に切り替える必要がありました。私のアーキテクチャに合うようにx64に。 - Rob Sedgwick
  • Jack the Ripperは、コメントではなく回答自体で提供されている解決策を参照しています。インストール2007 Office System Driver: Data Connectivity Componentsすぐに問題を解決しました。 - silkfire

119

「Microsoft.ACE.OLEDB.12.0」プロバイダーを使用できるようにする64ビットバージョンの「Microsoft Accessデータベースエンジン2010再配布可能ファイル」は、こちらから入手できます。

http://www.microsoft.com/en-us/download/details.aspx?id=13255

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


  • VS 2012を使用している場合は、[32ビットを優先]を選択してください。プロジェクトの[プロパティ]>>でチェックボックスがオフになっています。ビルド>>一般的な設定 - devstruck
  • @post_erasmus - このステップは、64ビットDLLをインストールした後の私にとっての鍵でした。 (インストールする必要さえないかもしれません。)ありがとう! - Buggieboy
  • VS 2008を使用しています(質問しないでください)が、post_erasmusを読むまでこの解決策は機能しませんでした。ヒントと設定'プラットフォームターゲット'プロパティ>>でx64に変更ビルド>>私のアプリケーションの一般的な設定並べ替え、ありがとう! - Resource
  • この回答のリンクから、32ビット版をダウンロードしてインストールすることもできます。 Windows 7 64ビット版を使用しているにもかかわらず、Visual Studio 2013のIIS Expressはデフォルトで32ビットモードで実行され、既にいくつかのOffice 2013コンポーネントが32ビット版でインストールされています。必要だった。 - Eric Barr
  • この回答では、[32ビットアプリケーションを有効にする]も設定する必要があります。アプリケーションプールでFalseに設定します。 - iowatiger08

52

アプリによっては(32/64ビット)あなただけのインストールが可能な接続を使用して

概要:

  • 2007-2016年からのすべてのオフィスはプロバイダー "Microsoft.ACE.Oledb.12.0"を含んでいます
  • アプリケーションアーキテクチャに応じて適切なランタイムエンジンを選択してください(32/64)
  • 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

とオフィス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
  • Powershellは「Microsoft.ACE.Oledb.12.0」を示しました。すでにインストールされていました。ただし、Access 2007パッケージをインストールする(別名2007 Office System Driver:データ接続コンポーネント私を立ち上げて行きました。私のシステムには既にあります:Office 2016 Ent、Visual Studio 2017 Ent - SushiGuy
  • どのバージョンがインストールされているかを通知するPowerShellスクリプトは天才です!と言っています - Rob Bowman
  • ちょっとした話題ですが、この単純なPowerShellはODBCドライバ用です。Get-OdbcDriver | select Name,Platform - Bernhard

29

Visual Studio 2010では、Configuration Managerダイアログボックスでビルドを "x86"から "Any CPU"に変更したときに、このエラー/例外が発生しました。私が理解しているこのOLEDBデータベースドライバはx86でしか動作せず、64ビット互換ではありません。ビルド設定をx86に戻すことで問題は解決しました。


  • OLEDBはx64と互換性があります。 x86だけでなく、Any CPUでも同様に、どのプラットフォームでも実行できます。下記の完全な回答をご覧ください。stackoverflow.com/a/32760211/3637582 - Merav Kochavi

28

最初に確認する必要があるのは、アプリケーションのビルド構成です。

  • あなたが持っている場合x86プラットフォームでプロジェクトを構築したその後、 問題が解決したら、次のパッケージをインストールしてください。 機械:

    1. 「Microsoft.ACE.OLEDB.12.0」プロバイダーを使用するには、Microsoft Accessデータベースエンジン2010再配布可能ファイルをインストールします。まず、このインストールは次の場所にあります。http://www.microsoft.com/download/en/details.aspx?id=13255

      インストールが完了したら、アプリケーションを実行してみてください。 解決しない場合は、手順2に進みます。

    2. この次のステップは、Officeで機能する、原因不明の回避策です。 それがOffice 2007のData Connectivity Componentsであるにもかかわらず、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ビルド構成これで私の問題は解決したようです。

注:ステップの順序は違いを生むように思われるので、それに従って従ってください。


  • 私は32ビットアプリケーションから64ビットアプリケーションに切り替えようとしていましたが、もう動作しませんでした。あなたの指示の2番目の部分は完璧に動作します!の/受動的flagは32ビットMicrosoft Officeでもインストールを許可します。 - Freddy
  • ヒント:AccessDatabaseEngine_x64.exeをフォルダに抽出してAceRedist.msiファイルとData.cabファイルを取得します。管理者モードでcmdプロンプトを開き、AceRedist.msi /passive。 - Jeremy Thompson
  • どうもありがとう。最初の選択肢は私のために働きました。 32ビット版のOfficeをアンインストールするのが面倒だったことを覚えています。 64ビットのOfficeをインストールした後に初めて、この問題は早く修正されました。しかし、この64ビットのOfficeコンポーネントが代わりに魔法をやりました。 - Biki

17

私はMSドライバをインストールしましたが、それでもまだうまくいきませんでした。それから私は見つけたこのブログ記事これで問題は解決しました。それをそこで読んでください、さもなければTLDR要約としてこれらの2つのイメージ(その記事からリンクされた)を使用してください:

enter image description here

enter image description here


  • これは私にとってもうまくいった唯一のことでした。 - myroslav
  • これを私の投稿として投稿しようとしていました。これは私の問題でした。私のソリューションでは1つのプロジェクトがx86でコンパイルされていたので、昨日このIIS設定を変更したので、プログラム全体を32ビットとして分類することにします。 - Lee
  • 私のサーバーは@ 64ビットを実行していますが、インストールされているMS Officeコンポーネントは32ビットです。これで私の問題は解決しました。ありがとうございました。 - MarceloBarbosa
  • これをうまく動作させるのは非常に難しいことです:(、これをPowerShellでスクリプト化して、それをある種の自動化されたサーバーセットアップスクリプトに統合することができるのでしょうか。 - David Rogers
  • @DavidRogersはおそらく、私はPSのエキスパートではないので、それを私に見ないでください! ;-) - Shaul Behr

13

まだこれの影響を受けているすべての人のために。

私はエラーを受けています...

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

... OP、Shailesh Sahuによって説明されているように。

私は64ビットのWindows 7を持っています。

私の問題は内にありますパワーシェルスクリプトではなく、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

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

私はその後、以下のコードを実行しましたパワーシェル(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のシートを読み込もうとしています。 ExcelファイルがSharePointドキュメントライブラリに保存されており、サーバーにExcelがインストールされていない。 Windows Server 2008 R2があります。 Office System Driver:Data Connectivity Componentsをインストールしましたが、クエリを実行してもMicrosoft.ACE.OLEDBが表示されません。あなたはそれについて考えを持っていますか?そして何か提案はありますか?前もって感謝します。 - doganak
  • 私は答えを見つけました。私はシステム管理者にMS Accessデータベースエンジンのインストールを依頼しました。彼はx86版をインストールしました。 PowerShell x86で再度クエリを実行すると、ACE.OLEDBが表示されました。 - doganak
  • 素晴らしいPowerShellコード。 32ビットバージョン(PowerShellリストに表示されませんでした)を使用していたため、64ビットバージョンをインストールできませんでした。 32ビット版を削除した後は、「32ビット版のOfficeコンポーネントが既にインストールされています...」を指定しなくても64ビット版をインストールできました。メッセージ。 64ビット版はPowerShellリストに表示され、私のアプリは動き始めました。 - Doppelganger

13

64ビットを使用していてもAccessDatabaseEngineをインストールしても問題が解決しない場合は、この郵便受け、それは私のために問題を解決しました。

すなわちあなたがインストールする必要がありますこのAccessDatabaseEngine


5

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

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

  1. ソリューションエクスプローラーでソリューションファイルを右クリックします。enter image description here

    1. 構成マネージャをクリックします。
    2. アクティブプラットフォームドロップダウンをクリックし、x86がすでに存在する場合はそれを選択し、それ以外の場合は新規をクリックします。enter image description here

    3. 新しいプラットフォームのドロップダウンからx86またはx64を選択します。enter image description here

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


4

インストールされた "AccessDatabaseEngine"がそれでも助けにならない場合は、以下の解決策があります。

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

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

CodeProject.comから


  • x86のみではなく、すべてのCPUとして実行できます。 ' x64'同様に。下記の完全な回答をご覧ください。stackoverflow.com/a/32760211/3637582 - Merav Kochavi

3

syp_dino、

あなたが提案したように私のための解決策"Microsoft.ACE.OLEDB.12.0 'プロバイダはローカルマシンに登録されていません"エラーはActive Solution Platformを "Any CPU"から "x86"に変更することです。

私がこれらのステップを実行し、ソリューションを再構築し、EXEをつかみ、そしてネットワーク上に置いたとき、すべてがWindows 7 64ビットマシン上でスムーズに動いた。



3

この記事の手順に従ってこれを修正することができました。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内から[ツール]»[オプション]»[プロジェクト]に移動して   ソリューション»Webプロジェクト»一般的な選択

「Webサイトおよびプロジェクトに64ビット版のIIS Expressを使用する」

そのオプションをチェックし、それから私のプロジェクトのプラットフォームターゲットを "Any CPU"(トラブルシューティングプロセスのどこかでx86に設定していた)に戻すと、私はエラーを克服することができた。


  • ありがとう、他のほとんどの答えは32ビットに落ちることのためです、しかしこれはあなたが64ビットに前進するのを助けます。 - illinoistim

3

Webプロジェクトをデバッグしている場合は、必ず確認してください。米国エクスプレスプロジェクトの設定に応じて、32ビットまたは64ビットで動作しています。

Goto

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

そしてそこから「Use 64 bit version of IIS Express ...」をチェック(またはチェックを外し)します。


  • 他の解決策を試すのに何時間もかかりますが、あなただけがそれを解決してください!ありがとう - Hernaldo Gonzalez

3

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

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


2

Excelファイルを読んでいるときにも同様の問題があります。

問題の歴史:

メモリ要件のため、最近アプリケーションを32ビットから64ビットに移行しました。そのために私達は私達の窓7を32ビットから64ビットに移行しました。それでも私たちのマシンに32ビットのOfficeをインストールしました。

これは、Excelデータをアプリケーションにインポートする際にこの問題が発生したためです。

溶液、

私は64ビット版をダウンロードしましたhttp://www.microsoft.com/en-us/download/details.aspx?id=13255としての引数でインストールされ、

AccessDatabaseEngine_x64.exe /パッシブ

コードを変更しなくても問題は解決します。

注意:

64ビットOSと64ビットオフィスでは、私の機能はこの修正なしでうまく働いていました。この修正は、32ビット版のOfficeがインストールされている64ビット版のOSで64ビット版のアプリケーションを実行している場合にのみ必要です。


  • しかし、マイクロソフトはこのソリューションに反対しています。私のクライアントの中には、この修正による他のOfficeプログラムの歪みを観察している人はほとんどいません。 - Rahul Techie

2

ダウンロードするだけで次のAccess DBエンジン(X86またはX64:あなたのマシンの設定に応じて)をインストールして、魔法を見てください:)

https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255


2

最初に、ご使用のシステムにどのバージョンのmicrosoft.ace.oledb.12.0がインストールされているかを確認してください。

パスC:¥Program Files¥Common Files¥Microsoft Shared¥OFFICE14¥ACEOLEDB.DLL - 64 bitがインストールされているパスの下にチェックインします。

パスC:¥Program Files(x86)¥Common Files¥Microsoft Shared¥OFFICE14¥ACEOLEDB.DLL - x 86 bitがインストールされているパスの下にチェックインします。

(x86)がインストールされている場合は、Configuration Managerを使用してソリューションプラットフォームをx86に変更し、x64をx64に変更します。

利用できない場合は、以下のリンクを使用してインストールしてください

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


1

私は他の人の指示に従った。このパッチをインストールし、そのパッチとMicrosoft Access Database Engine 2010をインストールします。

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

結局、私は仕事をしていないサイトのためにapppoolの詳細設定で "32ビットアプリケーションを有効にする"必要があることに気づきました。

すべてうまくいった。


1

またこれらのステップを試みることができます

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


1

忘れずにインストールしてくださいAccessDatabaseEngineWebアプリケーション用のサーバー上。


1

私は同じ問題を抱えていたが、この場合microsoft-ace-oledb-12-0-プロバイダー私のマシンに既にインストールされていて、開発された他のアプリケーションのためにうまく働きました。

これらのアプリケーションと私が問題を抱えていたアプリケーションとの違いは、「古いアプリケーションが実行されていたことです」ローカル米国「エラーのあるものはオンになっていました」米国エクスプレス(Visual Studioから実行している ")。 だから私がやったのは

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


1

私は持っていたMicrosoft Accessデータベースエンジン2010再配布可能私のマシンには既にインストールされていますが、まだマイクロソフトエースOLEDBプロバイダーエラー。

それから私は私が最近Office 2016にアップグレードしたことを思い出したので、私は再インストールしてみるべきかMicrosoft Accessデータベースエンジン2010再配布可能。そしてそれは私のマシン上の問題を修正しました。

あなたはMS Officeの異なるバージョンにアップグレードした、あるいはさらにあなたのMS Officeを修復/再インストールしたのであれば、その後再インストールしてみてくださいMicrosoft Accessデータベースエンジン2010再配布可能他の修正を見つけるのに時間を浪費する前に。がんばろう!


1

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

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

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

2007 Office System Driver:データ接続コンポーネント

3.)ビルドターゲットプラットフォームが "Any CPU"の場合は問題があるかもしれません。それは "X86"(Properties、Build、Platform Target)である必要があるかもしれません。


  • x86のみではなく、すべてのCPUとして実行できます。 ' x64'同様に。下記の完全な回答をご覧ください。stackoverflow.com/a/32760211/3637582 - Merav Kochavi
  • さて、それが私の場合だとは思いません…ですから、誰かのビルドターゲットプラットフォームが問題の一部になっているかもしれないことを今でも言及する価値があります。 - u8it

1

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

この場合、2つの選択肢があります。まず、2010 64ビットバージョンをインストールできます。 2007 32ビット版をインストールしている場合は、2010 64ビット版も一緒にインストールできます。 32ビット版の2010がインストールされている場合は、それをアンインストールして代わりに64ビット版の2010をダウンロードしてインストールする必要があります。 32ビット版と64ビット版の2010プロバイダーを同時にインストールすることはできません。開発用コンピュータでインストールを実行している場合は、既存のOfficeインストールの些細さにも制約を受ける可能性があります。

2番目のオプションは、32ビットアプリケーションを有効にするようにIISのアプリケーションプールを変更することです。フルバージョンのIISを使用している場合は、管理ツールを使用してこれを実行できます(コントロールパネル→管理ツール→インターネットインフォメーションサービス(IIS)マネージャ)。

より多くの理解のために以下を参照してくださいリンク


1

私はこれと同じ問題に直面しました。 Solution Propertiesに行き、Any CPUをx86に変更してください、私はそれが仕事をすると思います。


0

それはあなたがそれを実行できるようにするためにx64としてアプリケーションをコンパイルする必要があります、それであなたがそれをx36上で実行したいなら、あなたはあなたが受け入れるためにオフィスx86をインストールする必要があります上記のすべての解決策が、私は私がオフィスx64bitを持っていたことに気付いたときまでどれもうまくいきませんでした。


  • それにもかかわらず、私はOfficeをインストールしていますが、DB Connectorをインストールする必要がありました。 - cybermonkey
  • 上記のどれも私のために働かないとき、これは私の問題を解決します! - sam byte

0

  • 私は何日も同じ問題に直面しています。私はOLEDBをインストールしました 64ビット用のドライバ、32ビットも試してみました。 マイクロソフトのWebサイト。
  • 私はまたオフィス64bit版を再インストールしようとしました どういうわけかそれは働かなかった。 IISプールで32ビットアプリケーションを許可しようとしました 本当です。
  • プロジェクト環境をX86、AnyMachine、Mixedに変更しようとしました。 そして、ほとんど私がインターネット上で見つけることができたすべてのパッチを試してみました。しかしすべて 解決策は私をがっかりさせた。
  • 私はついにそのことを知るようになった ダウンロードしていたプロバイダが最新で動作していませんでした どちらかと。
  • アンインストールしてoledbドライバをインストールしました14.0.7015.1000私は会社のリソースからそれを得たとして私はそれのためのリンクを持ってはいけない、あなたはそれをグーグルする必要があるかもしれませんがそれは動作します。 私はこれに来ましたダウンロードリンクマイクロソフトのそしてそれはあまりにも働いた...しかしそれはバージョンです14.0.6119.5000しかしそれはうまくいった。


0

ExcelファイルからMS-SQLにデータをインポートすると、このエラーが発生しました。 プロバイダはすでにインストールされていて(64ビット)、なぜうまく動かなかったのか私は驚きました。 だから私がしたのは、ここで使用されているインポート/エクスポートアプリケーション、つまり.EXEを見つけることだけでした。 そして私はそれを見つけました

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

その後、データのインポートを実行するために直接.exeを実行しました。そしてそれはうまくいった!


0

私が別のコンピュータでそれを解決した方法:

私は、Office 2010を持っていないのでAccessデータベースを持っていなかったVisual Studio 2012が付いているWindows 7 32bitマシンを持っています。私は自分のWindows 7 64bitマシンで持っていたのと同じソースをコピーしました。

だから、私はここから他の人からの提案に従ってそれをダウンロードした後、私はこのWindows 7 32ビットマシンにAccessDatabaseEngineをインストールし、そしてすべてがうまくいった。

私はまだAccess 2010を既に含んでいるOffice 2010を既に持っている私のWindows 7 64ビットマシンで問題を抱えていました。このコンピュータで解決した方法はPROJECTに入ることでした。 32ビット再コンパイル/ビルドし、Microsoft.ACE.OLEDB.12.0 'プロバイダーがローカルマシンに登録されていないというメッセージが消えました。


  • 明らかに、私が購入したOfficeは、64ビットマシン用にOfficeを購入しない限り、デフォルトで32bit用にインストールされます。私はこれについての専門家ではありませんが、それが私の推測です。私は64ビットの可能性を最大限に活用してそれを使用しようとしているなら、私は上記の他の人によって示唆されるようにAccessDatabaseEngine 64ビットバージョンをダウンロードする必要があります。今のところ私が持っていたのは私のアプリケーションが32ビットCPUを好むようにしなければならなかった32ビットエンジンです。 - Humbert

0

これは今私にとってはうまくいきました。

  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. インストールパッケージに(item 1の)2つのプロジェクトを添付します。

リンクされた質問


関連する質問

最近の質問