3

いくつかの MS Access データベースから SQL Server 2008 データベースにデータをコピーする一連の SQL Server Integration Services パッケージがあります。さまざまなサブパッケージを呼び出す 1 つの親パッケージがあり、その親パッケージは、次のようにパッケージを実行する .bat ファイルを実行するユーザーによって開始されます。

dtexec /f "\\networkshare\package.dtsx" /CHECKPOINTING OFF /REPORTING EWCDI

これは数年間うまくいきました。IT 部門は、32 ビットの Windows XP ワークステーションを 64 ビットの Windows 7 にアップグレードし始めました。これらのユーザーのワークステーションをアップグレードした後、パッケージは失敗し、エラーが発生しました。

-1071607037,0x,SSIS エラー コード DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR. 要求された OLE DB プロバイダー MICROSOFT.JET.OLEDB.4.0 は登録されていません。おそらく 64 ビット プロバイダーが利用できません。エラー コード: 0x00000000。OLE DB レコードが利用可能です。ソース:「Microsoft OLE DB サービス コンポーネント」Hresult: 0x80040154 説明:「クラスが登録されていません」。

私のワークステーションはまだ Windows XP からアップグレードされておらず、パッケージを実行することはできますが、アップグレードを延期する能力がなくなっており、できるだけ早く解決策を見つける必要があります。この問題を解決するための努力の中で、これに関連する多くの記事や投稿を見つけました。私が試したことの中には、次のものがあります。

  • ユーザーに Client Tools and Business Intelligence Development Studio がインストールされていること、およびパスが有効であることを確認した後、.bat ファイルの内容を変更して、具体的に「C:\Program Files (x86)\Microsoft SQL Server\100\DTS」を参照するようにします。 \Binn\dtexec.exe」は、32 ビットの JET プロバイダーが使用されることを期待して
  • Run64BitRuntime 設定を調査しましたが、これはデバッグ中にのみ効果があるようで、役に立ちません
  • /X86 フラグをコマンド ラインに追加することを調査しましたが、dtexec に関する MSDN の記事によると、これは SQL Server エージェントがタスクを実行している場合にのみ効果があります
  • 私が最後に試みたのは、Microsoft Access データベース エンジン 2010 再頒布可能パッケージをインストールし、接続文字列を "Provider=Microsoft.Jet.OLEDB.4.0;" から変更することでした。"Provider=Microsoft.ACE.OLEDB.12.0;" に。私はこれで地面から降りることができないようです。BIDS で新しい接続を作成し、プロバイダーを「Microsoft Office 12.0 Access データベース エンジン OLE DB プロバイダー」に設定して接続をテストしようとすると、「プロバイダーの初期化中にエラーが発生したため、接続のテストに失敗しました。不明なエラーです」というエラーが表示されます。 .

他に何を試すことができるのか途方に暮れており、すでに試したことを試している場合でも、最初に試したときに何か間違った設定をした可能性があります。

どんな助けでも大歓迎です!

4

3 に答える 3

2

既定では、SQL Server は 64 ビット バージョンの DTEXEC をパスに配置します。32 ビット バージョンは、C:\Program Files(x86)\Microsoft SQL Server\100\DTS\Binn のような場所にある必要があり、直接呼び出す必要があります。ACE ドライバーと Excel ファイルでも同じ問題が発生しました。

詳細については、これを参照してください。

于 2013-03-29T05:47:13.050 に答える