MS SSIS に問題があります。ダウンロードしてデータベースにアップロードしたいと思います。ベスト プラクティス、またはエラーが発生する理由を探しています。
制御フローを使用します (他のタスクが呼び出されます)。ダウンロードしたデータの列に null があります。このため、文字列または整数を使用することはできません。そうしないと、エラーで終了します (SQL タスクを実行します)。だから私はオブジェクトを使用します。例: 変数 sBorderName はオブジェクトで、列のデータがここに格納されます。
これを他のデータベース テーブルにアップロードしたいと思います。たとえば、その列に null がある場合もあります。データベース タイプが一致しないため、オブジェクト変数をアップロードできません。
スクリプト タスク (C#) を使用して null-s を削除しようとするときは、次を使用します。
if (Dts.Variables["User::sBorderName"].Value == null)
{
Dts.Variables["User::sBorderNameSafe"].Value = "NULL ERROR";
}
else
{
Dts.Variables["User::sBorderNameSafe"].Value =
(String)Dts.Variables["User::sBorderName"].Value;
}
実行時エラーが発生しますが、何が問題なのかについてのヒントはありません。エラーは、else ケースから発生します。変数、スコープ、書き込み/読み取り権限などを再確認しました。
手伝ってくれませんか?これの何が問題なのですか?より良いアイデアがある場合、問題を解決する方法は何ですか?
シロ
アップデート:
Dts.Events.FireWarning(14, "Display Script", "sBorderName is:" + Dts.Variables["User::sBorderName"].Value, "", 0);
動作し、「sBorderName is:」と表示されます
ただし、値のすべてのキャストは実行時エラーで終了します
(String)Dts.Variables["User::sBorderName"].Value
どうすればこれを正しく処理できますか?