2

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

どうすればこれを正しく処理できますか?

4

1 に答える 1

0
Convert.ToString(Dts.Variables("sBorderName ").Value)

変数が時々nullになる可能性がある場合は、トリックを行います。

于 2012-07-12T10:45:27.100 に答える