我遇到了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
如何才能正确处理?
答案 0 :(得分:0)
Convert.ToString(Dts.Variables("sBorderName ").Value)
诀窍,如果变量有时可以为空。