我有一个DFT,可以将数据从OLEDB Source传输到OLEDB目的地。 Source的查询具有以下CASE语句:
SELECT Case Gender
When 'M' Then 'M'
When 'F' Then 'F'
Else Case XX_GenderID
When 1 Then 'M'
When 5 Then 'F'
Else 'U'
End
End as IN_Gender
FROM TblA
当我在SSIS中运行DFT时,SOMETIMES会将目标中的INCOMING“U”值从TblA更改为“9”。我不知道这9来自哪里。但是当我在SSMS中测试这个查询时,它没有将U转换为9.我还尝试在SSIS中手动执行该步骤,但它仍然没有转换U值。我不知道可能导致这种情况的原因。有什么想法吗?
答案 0 :(得分:0)
如果是数据类型问题,您可以尝试在查询中对CHAR(1)进行显式强制转换:
SELECT CAST(Case Gender ...
End AS CHAR(1)) as IN_Gender
FROM TblA
我会尝试在各个步骤中将Data Viewers添加到您的数据流中。如果稍后将值更改为9,则可以查看发生的位置。如果它已经从数据源中出来9,那么你知道问题所在。
答案 1 :(得分:0)
如果你看似随意的数据变化,那么其他东西正在改变它。触发器?另一个SSIS?另一个存储过程?您没有注意到SSIS中的一些代码?