web-dev-qa-db-ja.com

Microsoft.ACE.OLEDB.12.0が登録されていません

サーバーで実行される毎月実行されるSQL Serverジョブがあります。ジョブはSSISパッケージを使用しており、データベースからデータを抽出し、Excelシートを作成してデータをExcel 2003にコピーすることになっています。

Excel 2003の切り捨ての問題により、実際にはデータベースから約140,000行を取得しました(Excelは64,000行をサポートしています)。そのため、2007 Excel形式をサポートするように構成ファイルを変更しました。

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="  +  @[User::FullPath]  + ";Extended Properties=\"Excel 12.0;HDR=YES\"

しかし、ジョブを実行しようとすると、エラーメッセージが表示されて失敗します。

「要求されたOLE DBプロバイダーMicrosoft.ACE.OLEDB.12.0は登録されていません」

43
user3330998

要約:INSTALL32ビットバージョンMicrosoft Access Database Engine 2010 Redistributableアンインストール64ビットバージョン(インストール済みの場合)。 http://www.Microsoft.com/en-us/download/details.aspx?id=13255

Excel接続マネージャーは、バージョンが2007(xlsx)より上である場合、ExcelファイルにアクセスするためにACE OLE DBプロバイダーを使用しようとしています。ボックスは64ビットですが、32ビットアプリケーションであるSQL Server Data Toolsを使用しています。 SSDTには64ビットバージョンはありません。 SSDT内でパッケージを設計するとき、32ビットプロバイダーのみを使用できる32ビットプロセスを使用しています。 Excelファイルでテーブルを選択しようとすると、接続マネージャーは32ビットバージョンのACE OLE DBプロバイダーにアクセスする必要がありますが、このプロバイダーはマシンに登録されておらず、64ビットバージョンがインストールされています。

32-bitバージョンの「Microsoft Access Database Engine 2010 Redistributable」をダウンロードする必要があります。インストールしようとすると、エラーメッセージが表示される場合があります。最初に、おそらく以前にインストールした「Microsoft Access Database Engine 2010 Redistributable」の64ビットバージョンのみをアンインストールする必要があります。 64ビットバージョンと32ビットバージョンを同じホストに共存させることはできないため、それらを切り替える場合は(「プログラムと機能」を使用して)アンインストールしてインストールする必要があります。

64ビットバージョンのアンインストールとプロバイダーの32ビットバージョンのインストールが完了すると、問題は解決し、Excelファイル内のテーブルを最終的に選択できます。 Excel接続マネージャーは、Excelファイルにアクセスするために、ACE OLE DBプロバイダー(32ビットバージョン)を使用できるようになりました。

63
AlejandroR

別の方法があります。 Microsoft Office ExcelでExcelファイルを開き、「Excel 97-2003ワークブック」として保存します。次に、ファイル接続で新しく保存されたExcelファイルを使用します。

9
ChinaHelloWorld

別のオプションは、32ビットモードでパッケージを実行することです。ソリューションをクリックします=>プロパティ=?デバッグ=> 64ビットでの実行をfalseに設定します。

6
Tara

上記のように「Microsoft Access Database Engine 2010 Redistributable」をインストールしましたが、バージョンの問題と思われる場合、ビットトラックの問題を横から追跡しました。

「2007 Office System Driver:Data Connectivity Components」をインストールすると、分類されます。

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

6
Luke Puplett

OLEDBドライバーをインストールするだけで逃げられると思います- http://www.Microsoft.com/en-us/download/details.aspx?id=13255

5
TMNT2014

私にとって最も簡単な解決策は、SQLエージェントジョブを32ビットランタイムで実行するように変更することでした。 [SQLジョブ]> [プロパティ]を右クリック>ステップ>編集(ステップ)> [実行オプション]タブ> 32ビットランタイムを使用

スクリーンショット

5
wiciuo

64ビットAccessデータベースエンジンをダウンロードした後、指示に従って/ passiveスイッチ here を使用しました。 SQL Server 2012でOffice 32ビットSSASテーブルモデルを実行しています。64ビットAccessデータベースエンジンをダウンロードして実行すると、Office 2010を最初にアンインストールしないとインストールできないというメッセージが表示されましたが、/passiveスイッチはこれを解決したようです(表形式モデルでExcelブックとAccessテーブルをインポートできるようになりました)。

3
Andy Brown

ジョブが64ビットで実行されている場合は、おそらく32ビットドライバーをインストールしています。詳細: http://Microsoft-ssis.blogspot.com/2014/02/connecting-to-Excel-xlsx-in-ssis.html

3
Joost

以前に同様の操作を完了できた後、この同じエラーが発生していました。私は以前にそれらを持っていなかったし、物事が働いていたので、言及したパッケージのいずれもダウンロードしようとしませんでした。私の仕事のITは、Microsoft Office 2013で「修復」を行いました([コントロールパネル]> [プログラム]> [追加と削除]-[変更]を選択し、[修復])。数分で完了しましたが、すべてが修正されました。

1
smk081

私が見つけた最も簡単な解決策は、接続マネージャーのセットアップでExcelバージョン97-2003を指定することでした。

1
Jason Meyer

パッシブモードでADBEの32ビットバージョンをインストールするだけです。

管理者モードでcmdを実行し、次のコードを実行します。

AccessDatabaseEngine.exe/passive

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

0
Shahram Sohrabi