在进行条件分割时,我们从SSIS包中收到以下两个错误:
错误:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR “查找更新的记录”失败,因为发生错误代码0xC0049067,并且“查找更新的记录。输出[相同记录]”上的错误行处置指定错误时失败。
[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PROCESSINPUTFAILED。 组件“查找更新的记录”(76)上的ProcessInput方法在处理输入“条件分割输入”(77)时失败,错误代码为0xC0209029。标识的组件从ProcessInput方法返回错误。该错误是特定于组件的,但错误是致命的,并且会导致数据流任务停止运行。
在解决此问题时,我发现条件拆分条件中的以下代码实际上是导致错误:
(REPLACENULL(T1_from,"") == REPLACENULL(T2_from,"")) && (REPLACENULL(T2_to,"") == REPLACENULL(T2_to,""))
列的类型如下:
在检查数据时,我们的数据看起来像是:
我强烈怀疑在REPLACENULL函数中从T1转换DateTime mySQL类型时会引发异常,但我无法弄清楚如何直接使用它。
答案 0 :(得分:1)
您可以尝试使用有效日期替换空值,以避免比较字符串与日期,如下所示:
(REPLACENULL(T1_from, (DT_DBTIMESTAMP)"1800-01-01") == REPLACENULL(T2_from, (DT_DBTIMESTAMP)"1800-01-01")) && (REPLACENULL(T2_to, (DT_DBTIMESTAMP)"1800-01-01") == REPLACENULL(T2_to, (DT_DBTIMESTAMP)"1800-01-01"))