2011-06-27 61 views
0

我很喜歡使用SSIS來處理一些流程,腳本和直接的數據導入。大部分數據清理和轉換都是在我從SSIS調用執行SQL任務的存儲過程中發生的。對於大多數sprocs,如果因任何原因失敗,我並不真正關心回滾任何交易。我的SSIS錯誤處理基本上消除了任何臨時數據,然後將錯誤記錄到表中。 (人類需要修復當時的潛在數據問題)SSIS 2008與存儲過程。交易最佳實踐

我的問題圍繞着開始tran,結束tran。有沒有存儲過程可能會失敗,然後不讓調用的SSIS過程知道的情況?我正在尋找硬件故障,鎖定超時等。

我寧願儘可能避免使用事務,並依賴於我的SSIS錯誤處理。

想法?

回答

1

如果存儲過程沒有更新或插入任何記錄,那麼我可以想到的一種情況(並且事務也無濟於事)。這不會是一個失敗,但它可能需要一個SSIS包。您可能想要返回多少行受到影響,然後檢查。

我們也爲一些導入數據做了這樣的處理,其中從最後一次導入顯着偏離的數字表示數據問題。所以如果我們通常從進口B的客戶A獲得100,000條記錄,而我們得到5000條記錄,那麼SSIS包就會失敗,直到人們可以看到它,並且看到文件不好,或者它們真的意味着減少他們的勞動力或客戶名單。

順便說一句,我們分兩個表格(一個是原始數據不變,一個是我們用來清理的),如果你想要很容易地看到數據問題是什麼,告訴數據是否從一開始就是錯誤的,或者如果它以某種方式丟失或不正確地修復了清理過程,有時記錄錯誤的地方不是錯誤實際發生的地方,很高興看到數據看起來像什麼在變更過程之後,有時候你有不好的數據,是的(大多數時候都是這樣),但有時候你有一個錯誤,有了這兩個表格,你就可以看到它們是哪一個。作爲最後一步,將所有procs插入到日誌表中並確保該記錄在執行下一步之前存在,如果您擔心會丟失一些不回冒泡的執行程序。

+0

偉大的觀點。我實際上正在查看更新並插入計數。我也沒有在SQL服務器中保留原始未更改的數據,但記錄了有問題的文件的實際行號。這樣,你就不需要查看SQL來查看問題所在。 –

+0

好吧,我有超過一百萬條記錄的文件,查詢表格以查找問題記錄通常更容易。但是我們也記錄了確切的行號。 – HLGEM

+0

我明白了。我們的文件更符合20K記錄。分析師基本上使用excel來打開和查看這些文件。 –