0

有一個.net窗口服務,它處理ms sql服務器中的一個表內的部分數據。後臺服務嘗試計數機制

顯然,有時在事務期間發生錯誤,那麼我想跳過失敗的記錄並稍後返回。第一種方法是創建AttemptsCount列,在錯誤時增加它並在select查詢中檢查它的值。但是還有一些問題,比如如何在回滾期間保存AttemptsCount等。

那麼對於這種情況,補償機制有哪些方式?對於消息隊列,sql作業以及使用sql的windows服務,我很清楚。謝謝。

回答

0

如果您的記錄具有商業價值,那麼我一般不喜歡將它與僅技術專欄混合使用,如AttemptsCount。所以你的回滾問題只是一個違反設計原則的「應有的懲罰」。

怎麼樣創建一種錯誤日誌保存發生錯誤的記錄的記錄ID。你可以用任何方式實現它:一個額外的表,一個隊列......然後你可以按錯誤次數處理錯誤日誌時間(「我想......稍後返回」)。當然,你應該寫入這個日誌不在原來的交易本身,而是在它之外。

因此,你會達到幾個目標:從技術數據

  • 獨立的業務數據(記錄)(錯誤信息)
  • 「促進」處理的是一種業務流程的你的錯誤 - 這聽起來可能聽起來很有趣,但同時也是如此:) - 這個過程是獨立的。
  • 您可能需要進一步的邏輯,例如記錄每個錯誤的時間戳,將所有錯誤存儲到存檔,執行一些錯誤統計,...