0

我有一个将数据从 OLEDB 源传输到 OLEDB 目标的 DFT。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 时,它有时会将目标中的传入“U”值从 TblA 更改为“9”。我不知道这个 9 是从哪里来的。但是当我在 SSMS 中测试这个查询时,它没有将 U 转换为 9。我还尝试在 SSIS 中手动执行该步骤,但它仍然没有转换 U 值。我不知道可能是什么原因造成的。有什么想法吗?

4

2 回答 2

0

如果您有看似随机的数据更改,那么其他东西正在改变它。触发器?另一个SSIS?另一个存储过程?您没有注意到 SSIS 中的某些代码?

于 2013-04-04T02:10:00.940 回答
0

如果是数据类型问题,您可以尝试在查询中显式强制转换为 CHAR(1):

SELECT CAST(Case Gender ...
End AS CHAR(1)) as IN_Gender
FROM TblA

我会尝试在各个步骤中将数据查看器添加到您的数据流中。如果该值稍后更改为 9,您可以看到发生的情况。如果从数据源中出来的已经是 9,那么您就知道问题出在哪里。

于 2013-04-03T14:56:04.563 回答