我在使用 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
如何正确处理这个问题?