私はSSIS 2012でデータマートロードパッケージに取り組んでいます。VisualStudioでパッケージを実行しようとすると、次のエラーが発生します。
「接続マネージャData Warehouse.ssusrへのAcquireConnectionメソッド呼び出しがエラーコード0xC0014009で失敗しました」。
接続マネージャデータウェアハウス.ssusrの接続をテストすると、合格することがわかります。
パッケージ実行ユーティリティを使用してVisual Studioの外部でパッケージを実行すると、パッケージが実行されます。
何が起こっているのかわかりません。
パッケージは、SQL Serverジョブスケジュールを使用して実行することも拒否します。
ここではいくつかの仮定を行いますが、これは32ビット対64ビットの問題であると仮定します。確認するには、コマンドプロンプト(Windowsキー、R、cmd.exeまたはStart、Run、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ビットの世界でのみ表示されるため、これは問題になります。
必要なもの(おそらく32ビットバージョン)を特定したら、プロジェクトが適切なランタイムを使用していることを確認する必要があります。プロジェクトを右クリックして[プロパティ]を選択し、[構成プロパティ]の[デバッグ]タブに移動します。
Run64BitRuntime値を反転した後、パッケージがSSDT内から機能すると想定しています。
ジョブステップのbittednessを変更するには、既存のSQLエージェントジョブを編集する必要があります。これは、[構成]タブにあり、[詳細]タブにあります。 32ビットランタイムをオン/オフにします。
注意深い人々は dtexec が/X86
オプション。信じてはいけません。正しいビット数を取得する唯一の方法は、正しいdtexec.exeを明示的に呼び出すことです。
このオプションは、SQL Serverエージェントでのみ使用されます。コマンドプロンプトでdtexecユーティリティを実行する場合、このオプションは無視されます。