在SSMS和SSIS中运行查询时的输出不同

时间:2013-04-03 14:07:52

标签: ssis

我有一个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值。我不知道可能导致这种情况的原因。有什么想法吗?

2 个答案:

答案 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中的一些代码?