SSIS空处理,脚本任务

时间:2012-07-11 17:26:07

标签: c# ssis

我遇到了MS SSIS的问题。我想下载并上传资料到数据库。我正在寻找最佳实践,或者为什么我会收到错误。

我使用控制流(调用其他任务)。我下载的数据中的列中有空值。为此,我不能使用字符串或整数,否则它会退出并出错(执行sql任务)。所以我用对象。示例:变量sBorderName是对象,列中的数据到此处。

我想将其上传到其他数据库表。例如,在该列中也可以为null。我无法上传对象变量,因为我得到数据库类型不匹配。

当我尝试使用脚本任务(C#)消除null-s时,我使用以下内容: sBorderName是对象 sBorderNameSafe是字符串

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案例。我已经仔细检查了变量,范围,写/读权限等。

你能帮帮我吗?这有什么问题?如果你有更好的想法,解决问题的方法是什么?

Sziro

更新:

Dts.Events.FireWarning(14, "Display Script", "sBorderName is:" + Dts.Variables["User::sBorderName"].Value, "", 0); 

确实有效,它显示“sBorderName is:”

但是每个值的转换都会以运行时错误退出

(String)Dts.Variables["User::sBorderName"].Value

如何才能正确处理?

1 个答案:

答案 0 :(得分:0)

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

诀窍,如果变量有时可以为空。