2012-04-13 7 views
0

Visual Studio内で実行するとうまく動作するカスタムSSISコンポーネントを作成しています。ただし、dtexec.exeまたはdtexecui.exeを使用して実行すると失敗します。SSISカスタムコンポーネントはVS2008で動作しますが、おそらくLineageIDに関連するDTExecで失敗します

エラーは、列名からLineageIDへのマッピングを構築するときにPreExecuteメソッドで発生します。私は私が私が言ってFindColumnByLineageIDからスローされた例外を取得します。この時点でbufferManager.FindColumnByLineageID(output.Buffer, foo)

var foo = output.OutputColumnCollection[i].LineageIDから取得した値を渡してやっているすべてのデバッガで物事を見て、私は、混乱していますここでは、ある

System.ArgumentExceptionがユーザーコードによって処理されませんでした。Message = Value が予期された範囲内にありません。
ソース= Microsoft.SqlServer.DTSPipelineWrapのStackTrace: のInnerException:

私は途方に暮れています。このコードはBIDSでうまく動作しますが、現時点でのロジックはOKと思われますが、実際には間違っていることはありません.SSISからSSISに値を渡すだけです。私の気持ちは、いくつかの設定や構成が混乱しているということですが、この時点でどのようなものか分かりません。どんな推測でも大いに感謝します。

ありがとうございます!

答えて

0

私は1年以上前の回答でこれをフォローアップすることを約束しました。時間の経過とともに、いくつかのディテールが消えてしまいましたが、実際には2つの環境で構成要素が異なって配線されていたため、基本的には問題でした。

BIDSで実行している場合、コンポーネントグラフに追加された目に見えないコンポーネントが、コマンドラインでは表示されません。私は、これがGUIの更新とビューアとすべてを接続する能力のサポートを提供することだと思う。

私は賢明にしようとしていましたが、そのグラフからいくつかの情報を引き出し、BIDSのケースに隠されている余分なコンポーネントのために幸運になりました。 (それは、ヒープ上にあるはずのスタック上に何かが割り当てられ、そのスタックのビットがいつ踏み出されるかによって決まるバグの1つと感じました。)私が作った悪い仮定を修正したらコンポーネントグラフはそれ自身解決しました。

0

Visual Studioマシンは64ビット環境ですか? DTExec.exeの32ビット版、つまりProgram Files(x86)を実行してみてください。

reasonable numberissuesで、64ビットバージョンを使用してパッケージを実行しようとしたときに発生します。

+0

私はすべてのインスタンスを64ビット未満で実行しています。私はVisual Studioで32ビットフラグを使用するように設定しようとしましたが、それでも機能しました。私はあなたのリンクを見て、私は彼らが言及したような何かをやっているとは思わない。提案していただきありがとうございます! – Ukko

+0

興味のあることに、とにかく32ビットバージョンのdtexecを実行しようとしましたか?私はインスタンスのアーキテクチャにかかわらずどちらかを動作させるべきだと思っています。 – Geoff

+0

うん、32と64は同じように働いた。私は今日これを解決しました。そして、私が時間を取れば、今晩の答えを書き上げます。 – Ukko

0

あなたはカスタムコンポーネントを登録しましたか?

カスタムタスクやカスタム変換などのカスタムSSISコンポーネントは、展開ユーティリティでは移行されません。 SSISパッケージがコンポーネントにアクセスできるようにするには、コンポーネントを手動で移動して登録する必要があります。

+0

私の開発ボックスでも同じ動作が見られます。カスタムコンポーネントが取り込まれるように、私のコードの中から例外が発生しています。今では設定マジックがいくつかあるかもしれませんが、どうしたらそれが手に入らないのか分かりません。 – Ukko

関連する問題