在2008 SSIS我有一個foreach循環會從表中取一個單一的結果值,並把它放在一個變量文件的執行SQL任務系統任務。 SQL代碼是類似於:SSIS SQL執行由設置單行結果造成工作差錯,但沒有行被返回
SELECT productcode
FROM products
WHERE eancode = ?
的代碼將表的產品回報的產品代碼,如果相應的eancode匹配。 ?
是從圖像文件名派生的SSIS中的變量。
基本上,包(環路+ sqltask + FStask)將文件名改變從eancode到PRODUCTCODE。
有時包會失敗,因爲SQL任務嘗試獲取產品代碼但無法返回結果。如果表中不存在eancode,則會發生這種情況。
可以做些什麼來應對這樣的錯誤,因此該循環不停止?
我想這些可能的解決方案:
使用ISNULL(產品代碼, '替代')是不是一種選擇。結果 集將用於一個變量,該變量將用於重命名圖像的文件名 。這將導致每一個沒有結果的圖像都會得到'替換'名稱 。此外,它只是不會返回任何東西,而不是 即使是isnull更換。
更改exec SQL任務或ForEach循環的屬性設置, 因此,它跳到下一個,但哪個和哪個?
從SQL任務添加失敗優先約束到另一個(子) 任務。但是它應該導致什麼任務?如果在sql任務中沒有結果集,它基本上什麼也不做。
改變約束來完成,但這樣會導致文件系統的任務,因爲它缺少值目標filepathname給出一個錯誤。如果sql任務失敗,它不應該在下一個任務中重命名該文件。
理想的情況是,如果sql任務因沒有結果集而失敗,那麼當前循環將離開SQL步驟並繼續下一輪。
感謝
PS SSIS可能是這個錯誤的工具。創建程序邏輯並不是那麼靈活,甚至當你把它埋在表達式和約束條件下等等。 –
謝謝@ElectricIama,我將嘗試查詢並找到一種方法來在下一步中處理null。我相信你對ssis沒有成爲最佳工具有點意見。你碰巧知道哪些工具更靈活,值得一看? – J3FFK
就我個人而言,我會使用VBScript,但實際上它是任何您熟悉的語言。現代的選擇是Powershell。如果你想學習新的東西,並且你認爲你會像這樣做更多的Windows腳本,你應該學習PowerShell。我認爲人們假設它是與SQL Server數據相關的,你需要使用SSIS,但事實並非如此。 –