在自動數據層應用程序(DACPAC)升級中設置DacUpgradeOptions.IgnoreDataLoss
屬性的最佳做法是什麼?在連續部署中設置DacUpgradeOptions.IgnoreDataLoss標誌的最佳實踐?
根據MSDN文檔(link)上,如果IgnoreDataLoss
是真,升級將繼續進行,即使某些操作導致數據的丟失。如果錯誤,這些操作將終止升級。例如,如果當前數據庫中的表格不存在於新DAC的模式中,則如果指定了True,則該表格將被刪除。默認值爲True。
但是,在持續交付的環境中,每個數據庫更改都會自動部署到管道(CI - > Test - > UI-Test)並最終到生產環境中,這似乎是一種安全措施IgnoreDataLoss
爲錯誤,因爲我們不希望生產數據庫上發生數據丟失/漂移。如果IgnoreDataLoss
爲錯誤並且開發人員提交引入數據丟失的數據庫更改,則CI /測試版本將失敗,這使我們能夠在此更改達到產品之前捕獲此數據。
儘管這種方法存在問題,因爲是次數據丟失是故意的。例如,我們可能需要刪除一個不再使用的特定表。如果IgnoreDataLoss
爲False,則構建失敗並且DACPAC更改從未應用,因爲可能會檢測到數據丟失(即使這種損失是故意的)。在這種情況下,我們希望IgnoreDataLoss
爲True。
只是想知道最好的做法是什麼,尤其是在我們連續自動部署的環境中。任何建議將不勝感激。謝謝!