2017年10月のWindowsパッチ適用のため、VB.net 2010で設計されたSSISスクリプトタスクの1つがデータの取得に使用されていましたSQL ServerからExcel(.xls)ファイルを作成し、同じファイルを作成しても機能しなくなりました。エクセルたconnectionStringは、ここで使用10月以降にMicrosoft.jet.oledb.4.0プロバイダが登録されないWindowsパッチ
です:私たちは私たちの場合は
"Unexpected error from external database driver (1)"**, post which we had modified the string to:
excelConString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & strFileName & ";Extended Properties='Excel 8.0;HDR=YES;IMEX=YES;ReadOnly=False;';"
を取得した
excelConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFileName & ";Extended Properties=""Excel 8.0;HDR=Yes;"""
、我々は、SSISスクリプトコードをコピーして、ボタンのコール機能にスクリプトを貼り付けVisual Studio 2013のWindowsフォームソリューションでデバッグしました。ターゲットプラットフォームもx64に変更しました。
期待通りにExcelが正常に生成されていました。
我々は、Visual Studio 2015用のSSDTでSSISスクリプトタスクエディタで接続文字列を更新しようとしている場合にはしかし、我々はまだ'Microsoft.ACE.OLEDB.12.0'
プロバイダはローカルマシンに登録されていないエラーを取得している。」
「任意のCPU」オプションを削除して、スクリプトタスクソリューションのターゲットプラットフォームを変更しました。
誰でもこの問題を助けてくれれば、本当に大きな助けになるでしょう
私たちは既にAccessDatabaseEngineを試していました。 exeドライバのインストールを行っていますが、Windowsフォームソリューションは、ドライバがインストールされていない本番環境システム自体でこの問題を修正できることがわかります。 x64ターゲットプラットフォームとconnectionStringの変更のみが行われます。 SSISスクリプトタスクでは、なぜそれが動作しないのですか。
プラットフォームを任意のCPUからx64に切り替えることは役立たない可能性があります。プラットフォームに問題がある場合は、通常32ビットプロバイダのみがインストールされており、アプリケーションは64ビットプロセスで実行されているためです。 x64のプラットフォームは、64ビットマシンでは変更されません。つまり、32ビットマシンではまったく動かないということです。アプリを32ビットプロセスで実行して32ビットプロバイダにアクセスできるようにするには、プラットフォームをx86に設定する必要があります。代わりに、64ビットACEをインストールすることもできます。 – jmcilhinney
こんにちは、私はそれをx86に変更しようとしましたが、 "'Microsoft.ACE.OLEDB.12.0'プロバイダがローカルマシンに登録されていません。メッセージ。 –
私はあなたの質問を最初から十分に読んでいないかもしれません。あなたは同じマシン上のx64プラットフォームをターゲットとするWinFormsアプリケーションが動作するが、SSISパッケージはACEがインストールされていない、正しいことを伝えていると言っていますか?その場合、SSISパッケージが32ビットプロセスで実行されているように見えます。私はそれが正直であるように制御されているかどうかはわかりませんが、32ビットまたは64ビットのSQL Serverをインストールしたかどうかによって異なります。それは考えられる原因ですか? – jmcilhinney