2

在自動數據層應用程序(DACPAC)升級中設置DacUpgradeOptions.IgnoreDataLoss屬性的最佳做法是什麼?在連續部署中設置DacUpgradeOptions.IgnoreDataLoss標誌的最佳實踐?

根據MSDN文檔(link)上,如果IgnoreDataLoss,升級將繼續進行,即使某些操作導致數據的丟失。如果錯誤,這些操作將終止升級。例如,如果當前數據庫中的表格不存在於新DAC的模式中,則如果指定了True,則該表格將被刪除。默認值爲True

但是,在持續交付的環境中,每個數據庫更改都會自動部署到管道(CI - > Test - > UI-Test)並最終到生產環境中,這似乎是一種安全措施IgnoreDataLoss錯誤,因爲我們不希望生產數據庫上發生數據丟失/漂移。如果IgnoreDataLoss錯誤並且開發人員提交引入數據丟失的數據庫更改,則CI /測試版本將失敗,這使我們能夠在此更改達到產品之前捕獲此數據。

儘管這種方法存在問題,因爲次數據丟失是故意的。例如,我們可能需要刪除一個不再使用的特定表。如果IgnoreDataLossFalse,則構建失敗並且DACPAC更改從未應用,因爲可能會檢測到數據丟失(即使這種損失是故意的)。在這種情況下,我們希望IgnoreDataLossTrue

只是想知道最好的做法是什麼,尤其是在我們連續自動部署的環境中。任何建議將不勝感激。謝謝!

回答

2

在大多數情況下,我們可以將IgnoreDataLoss設置爲false。這有助於確保我們不會意外修改數據庫並引入數據丟失。當我們想要刪除表格時,我們可以手動刪除表格(請不要使用DACPAC)。或者,我們可以暫時將IgnoreDataLoss設置爲true以執行特定的升級操作。

最好的問候,

Ming Xu。