ボタンクリックイベントで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データベースエンジン2010再配布可能ファイル」は、こちらから入手できます。
http://www.microsoft.com/en-us/download/details.aspx?id=13255
承認された回答からのダウンロードを使用する場合は、@ backtestbroker.comによって指摘されているように、x86用にビルドする必要があります。
アプリによっては(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" バージョン
Get-OdbcDriver | select Name,Platform
- Bernhard
Visual Studio 2010では、Configuration Managerダイアログボックスでビルドを "x86"から "Any CPU"に変更したときに、このエラー/例外が発生しました。私が理解しているこの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で機能する、原因不明の回避策です。 それが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データベースエンジンをインストールしました。
これら2つのステップの後、私はビルドした後私のアプリケーションを実行することに成功しました x64またはAnyCPUビルド構成これで私の問題は解決したようです。
注:ステップの順序は違いを生むように思われるので、それに従って従ってください。
AceRedist.msi /passive
。 - Jeremy Thompson
私はMSドライバをインストールしましたが、それでもまだうまくいきませんでした。それから私は見つけたこのブログ記事これで問題は解決しました。それをそこで読んでください、さもなければTLDR要約としてこれらの2つのイメージ(その記事からリンクされた)を使用してください:
まだこれの影響を受けているすべての人のために。
私はエラーを受けています...
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のバージョンを確認して適切なバージョン番号を使用できるようになります。
64ビットを使用していてもAccessDatabaseEngineをインストールしても問題が解決しない場合は、この郵便受け、それは私のために問題を解決しました。
すなわちあなたがインストールする必要がありますこのAccessDatabaseEngine
インストールされた "AccessDatabaseEngine"がそれでも助けにならない場合は、以下の解決策があります。
Active Solution Platformを "Any CPU"から "x86"に変更する必要があります。
CodeProject.comから
syp_dino、
あなたが提案したように私のための解決策"Microsoft.ACE.OLEDB.12.0 'プロバイダはローカルマシンに登録されていません"エラーはActive Solution Platformを "Any 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内から[ツール]»[オプション]»[プロジェクト]に移動して ソリューション»Webプロジェクト»一般的な選択
「Webサイトおよびプロジェクトに64ビット版のIIS Expressを使用する」
そのオプションをチェックし、それから私のプロジェクトのプラットフォームターゲットを "Any CPU"(トラブルシューティングプロセスのどこかでx86に設定していた)に戻すと、私はエラーを克服することができた。
Webプロジェクトをデバッグしている場合は、必ず確認してください。米国エクスプレスプロジェクトの設定に応じて、32ビットまたは64ビットで動作しています。
Goto
ツール>オプション>プロジェクトとソリューション> Webプロジェクト
そしてそこから「Use 64 bit version of IIS Express ...」をチェック(またはチェックを外し)します。
SSMS 2014を使用してExcelファイル(xlsx)からSQL Server DBにデータをインポートしようとしたときに、この問題が発生しました。
の2007 Office System Driver:データ接続コンポーネントインストールは私のためにトリックをしました。
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ビット版のアプリケーションを実行している場合にのみ必要です。
ダウンロードするだけで次の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 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
私は他の人の指示に従った。このパッチをインストールし、そのパッチとMicrosoft Access Database Engine 2010をインストールします。
私の問題は、私は自分のマシンの2つのサイトで同じライブラリ(linq2sql)を使用しているということでした。 1が動作し、1が動作しません。
結局、私は仕事をしていないサイトのためにapppoolの詳細設定で "32ビットアプリケーションを有効にする"必要があることに気づきました。
すべてうまくいった。
またこれらのステップを試みることができます
SQL Serverで、 1.一つのデータベースを開く 2.オプション 'Server Obtect'をクリックします 3.「リンクサーバー」をクリックします 4.「プロバイダ」のクリック 5.「Microsoft.ACE.OLEDB.12.0」のClic Rigth 6.すべてのオプションのチェックを外して閉じます
忘れずにインストールしてくださいAccessDatabaseEngineWebアプリケーション用のサーバー上。
私は同じ問題を抱えていたが、この場合microsoft-ace-oledb-12-0-プロバイダー私のマシンに既にインストールされていて、開発された他のアプリケーションのためにうまく働きました。
これらのアプリケーションと私が問題を抱えていたアプリケーションとの違いは、「古いアプリケーションが実行されていたことです」ローカル米国「エラーのあるものはオンになっていました」米国エクスプレス(Visual Studioから実行している ")。 だから私がやったのは
- プロジェクト名を右クリック。
- プロパティへ
- 右側のWebタブに移動します。
- [サーバー]の下の[ローカルIIS]を選択し、[仮想ディレクトリの作成]ボタンをクリックします。
- アプリケーションを再度実行するとうまくいきました。
私は持っていたMicrosoft Accessデータベースエンジン2010再配布可能私のマシンには既にインストールされていますが、まだマイクロソフトエースOLEDBプロバイダーエラー。
それから私は私が最近Office 2016にアップグレードしたことを思い出したので、私は再インストールしてみるべきかMicrosoft Accessデータベースエンジン2010再配布可能。そしてそれは私のマシン上の問題を修正しました。
あなたはMS Officeの異なるバージョンにアップグレードした、あるいはさらにあなたのMS Officeを修復/再インストールしたのであれば、その後再インストールしてみてくださいMicrosoft Accessデータベースエンジン2010再配布可能他の修正を見つけるのに時間を浪費する前に。がんばろう!
1.)で接続文字列を確認しますConnectionStrings.com。
2.)正しいデータベースエンジンがインストールされていることを確認してください。これらは私を助けた2つのデータベースエンジンでした。
Microsoft Accessデータベースエンジン2010再配布可能
2007 Office System Driver:データ接続コンポーネント
3.)ビルドターゲットプラットフォームが "Any CPU"の場合は問題があるかもしれません。それは "X86"(Properties、Build、Platform Target)である必要があるかもしれません。
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)マネージャ)。
より多くの理解のために以下を参照してくださいリンク
私はこれと同じ問題に直面しました。 Solution Propertiesに行き、Any CPUをx86に変更してください、私はそれが仕事をすると思います。
それはあなたがそれを実行できるようにするためにx64としてアプリケーションをコンパイルする必要があります、それであなたがそれをx36上で実行したいなら、あなたはあなたが受け入れるためにオフィスx86をインストールする必要があります上記のすべての解決策が、私は私がオフィスx64bitを持っていたことに気付いたときまでどれもうまくいきませんでした。
ExcelファイルからMS-SQLにデータをインポートすると、このエラーが発生しました。 プロバイダはすでにインストールされていて(64ビット)、なぜうまく動かなかったのか私は驚きました。 だから私がしたのは、ここで使用されているインポート/エクスポートアプリケーション、つまり.EXEを見つけることだけでした。 そして私はそれを見つけました
C:¥Program Files¥Microsoft SQL Server¥130¥DTS¥Binn¥DTSWizard.exe
その後、データのインポートを実行するために直接.exeを実行しました。そしてそれはうまくいった!
私が別のコンピュータでそれを解決した方法:
私は、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 'プロバイダーがローカルマシンに登録されていないというメッセージが消えました。
これは今私にとってはうまくいきました。
しかし、あなたのアプリケーションパッケージのためにあなたは以下の解決策のどれでも使うことができます:
または