2

我在使用 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 情况。我已经仔细检查了变量、范围、写/读权限等。

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

西罗

更新:

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)

如果变量有时可以为空,那就行了。

于 2012-07-12T10:45:27.100 回答