2013-04-03 84 views
0

我有一個DFT將數據從OLEDB源傳輸到OLEDB目標。源具有具有以下CASE語句的查詢:在SSMS和SSIS中運行查詢時的輸出不同

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有時從TBLA到「9」的目標改變輸入「U」值的DFT。我不知道這9個來自哪裏。但是當我在SSMS中測試這個查詢時,它並沒有將U轉換爲9.我也試着在SSIS中手動執行這個步驟,但它仍然沒有轉換U值。我不知道可能是什麼原因造成的。有什麼想法嗎?

回答

0

如果它是一個數據類型的問題,你可以嘗試顯式轉換爲CHAR(1)查詢:

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

我會嘗試加入Data Viewers在各個步驟的數據流。如果該值稍後變爲9,則可以看到發生的情況。如果它已經從數據源中出來了,那麼你就知道這是問題所在。

0

如果您看似隨機的數據更改,則其他內容正在改變它。觸發器?另一個SSIS?另一個存儲過程?你沒有注意到你的SSIS中的一些代碼?