none
SSIS デザイナのAccess読込み失敗(Microsoft.Jet.OLEDB.4.0 64 ビット プロバイダが利用できない) RRS feed

  • 質問

  • 初歩的な質問のような気がしますが、よろしくお願いします。

     SSISでOLE DB ソースをAccess 2002-2003ファイル形式のデータを指定すると、
    プロバイダーが見つからず、うまくいきません。
     AccessをやめてSQL Serverに変更すると、問題なく読込めました。
     SQL Server Management Studioから[データのインポート]を利用すると
    問題なくデータをインポ-トできました。

     詳細は、以下の通りです。
    対応が分からず困っていますので、よろしくお願いします。

    【環境】
    CPU:Core2 2.13GHz、メモリ:2GB
    Windows Server Enterprise Edition 2008(x64版) SP1(6.0.6001)
    SQL Server Enterprise Edition 2008(x64版)
       完全インストール:10.0.1600.22 ((SQL_PreRelease).080709-1414 )
       MDAC:6.0.6001.18000 (longhorn_rtm.080118-1840)
       Microsoft .NET Framework:2.0.50727.3053

    【設定内容】
    制御フローを[データフロータスク]を選択し、[データフロー]タブにしました。
    [OLE DB ソース]を選択し、[接続マネージャ]を起動しました。

     [プロバイダ]を[Microsoft Jet 4.0 OLE DB Provider]を選択し、[OK]をクリックしました。
     データベースファイル名を[人事.mdb]を選択し、[開く]をクリックしました。
     [接続テスト]をクリックし、問題がない事を確認し、[OK]をクリックしました。
     [OK]をクリックしました。
     [データ アクセス モード]が[テーブルまたはビュー]である事を確認しました。
     [テーブル名またはビュー名]で、[部署]を選択しました。
     左メニューの[列]を選択し、確認しました。今回の出力列は同じ名前を使いました。
     [OK]をクリックしました。

    【実行結果】
    エラー: 0xC0209303 (Package, 接続マネージャ "人事": SSIS エラー コード DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR。
    要求された OLE DB プロバイダ Microsoft.Jet.OLEDB.4.0 は登録されていません。
    使用できる 64 ビット プロバイダが存在しない可能性があります。エラー コード: 0x00000000。

    OLE DB レコードを使用できます。
    ソース: "Microsoft OLE DB Service Components" Hresult: 0x80040154 説明: "クラスが登録されていません"。

    エラー: 0xC020801C (データ フロー タスク, OLE DB ソース [1]: SSIS エラー コード DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。
    エラー コード 0xC0209303 により、接続マネージャ "人事" に対する AcquireConnection メソッドの呼び出しが失敗しました。
    このエラーの前に、AcquireConnection メソッドの呼び出しが失敗した理由の詳細が記載されたエラー メッセージが報告されている可能性があります。

    2009年3月2日 4:44

回答

  • 64bit 環境でエラーコード  DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR ですから、
    開発環境(BIDS)では プロジェクトの Run64BitRuntime プロパティを false に設定すると成功するのではないでしょうか。

    ※実行環境ではまた別の対応になります。
    参考:64 ビット コンピュータ上の Integration Services に関する注意点 http://msdn.microsoft.com/ja-jp/library/ms141766.aspx
    • 回答としてマーク sk7474 2009年3月11日 9:42
    2009年3月2日 20:37

すべての返信

  • 64bit 環境でエラーコード  DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR ですから、
    開発環境(BIDS)では プロジェクトの Run64BitRuntime プロパティを false に設定すると成功するのではないでしょうか。

    ※実行環境ではまた別の対応になります。
    参考:64 ビット コンピュータ上の Integration Services に関する注意点 http://msdn.microsoft.com/ja-jp/library/ms141766.aspx
    • 回答としてマーク sk7474 2009年3月11日 9:42
    2009年3月2日 20:37
  • nagasakitさま
     Run64BitRuntime プロパティを falseにしたら、成功しました。
    ご教授、感謝します。

     ただ、これをすると、SQL ServerのOLE DBプロバイダも32Bitになってしまいますよね。
    また、[接続テスト]で問題なく接続できたのが、実行時にだめになるかという事と、
    データをインポ-トでAccessの読込みがうまくいくのに、SSISのデバックではうまくいかないなど、
    OLE DBプロバイダと各動作環境を熟知していないと理解が難しいと思いました。
    この当りを、もう少し修行したいと思います。

     ありがとうございました。
    2009年3月3日 0:49
  • 自己レスです。

    以下のURLを見ますと、Accessは64ビットしかサポートしていないようです。

     http://ssis.wik.is/Data_Sources

     SSISにAccessを含んだ場合は、32ビットしか動作しないというのが結論のようです。
    [接続テスト]は、サーバの接続テストのみで、プロパイダ機能まではテストしていないようですね。
    インポートは、64ビット環境でも32ビットで構成されるようですね。

     今後、Windows Serverも64ビットOnlyになるので、
    AccessのOLE DBプロバイダも64ビットをサポートする事を期待したいと思います。
    2009年3月3日 1:46
  • こんにちは。中川俊輔です。

    nagasakitさん、回答ありがとうございます。

    BI Beginnerさん、フォーラムのご利用ありがとうございます。
    有用な情報と思われたため、nagasakitさんの回答へ回答マークをつけさせていただきました。

    残念ながら、おっしゃる通りx64対応のOLE DB Provider for Jetはリリースされていません。
    The Microsoft OLE DB Provider for Jet and the Microsoft Access ODBC driver are available in 32-bit versions only
    http://support.microsoft.com/kb/957570/en-us
    64 ビットの SQL Server エージェントを使用して、SQL Server 2005 Integration Services パッケージをスケジュールする方法
    http://support.microsoft.com/kb/934653

    今後ともフォーラムをよろしくお願いします。
    それでは!

    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。
    コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。
    詳しくは
    http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。

    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年3月11日 10:02