22

SSIS 2012でデータマートの読み込みパッケージに取り組んでいます。VisualStudioでパッケージを実行しようとすると、次のエラーが発生します。

「接続マネージャーDataWarehouse.ssusrへのAcquireConnectionメソッドの呼び出しがエラーコード0xC0014009で失敗しました」。

Connection Manager Data Warehouse.ssusrの接続をテストすると、合格していることがわかります。

パッケージの実行ユーティリティを使用してVisualStudioの外部でパッケージを実行すると、パッケージが実行されます。

何が起こっているのかわかりません。

パッケージは、SQL Serverジョブスケジュールを使用して実行することも拒否します(それが何かと関係がある場合)。

4

1 に答える 1

51

ここでいくつかの仮定をしますが、これは32ビットと64ビットの問題であると仮定します。確認するには、コマンドプロンプト(Windowsキー、R、cmd.exeまたはスタート、実行、cmd.exe)からこれらの2つのコマンドを試してください。

"C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx
"C:\Program Files\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx

1つ目はパッケージを32ビットモードで実行し、2つ目は64ビットモードで実行します。これは、ドライバーと作成したDSNが32/64ビットの世界でのみ表示されるため重要です。

SSDTの修正

必要なもの(おそらく32ビットバージョン)を特定したら、プロジェクトが適切なランタイムを使用していることを確認する必要があります。プロジェクトを右クリックして[プロパティ]を選択し、[構成のプロパティ]の下の[デバッグ]タブに移動します。

デバッグタブ、Run64BitRuntime

Run64BitRuntime値を反転した後、パッケージはSSDT内から機能すると思います。

SQLエージェントの修正

ジョブステップのビット数を変更するには、既存のSQLエージェントジョブを編集する必要があります。これは、[構成]タブの下にあり、次に[詳細設定]タブの下にあります。32ビットランタイムをオン/オフにします。

エージェント32ビットタブ

嘘と欺瞞

注意深い人々は、dtexecがオプションを提供していることに気付くかもしれません/X86。信じないでください。正しいビット数を取得する唯一の方法は、正しいdtexec.exeを明示的に呼び出すことです。ドキュメントには多くのことが書かれていますが、誰もドキュメントを読んでいません。

このオプションは、SQLServerエージェントでのみ使用されます。コマンドプロンプトでdtexecユーティリティを実行する場合、このオプションは無視されます。

于 2012-12-19T19:50:32.917 に答える