Schema

我可以只更新數據庫中需要的更改嗎?

  • November 23, 2014

首先,如果您不能很好地理解我在說什麼,我深表歉意,並且可以對其進行編輯以更好地理解我的文章。下一個範例是為了更好地理解具有控製版本的數據庫。

假設我有一個被多家企業使用的軟體。該軟體需要一個數據庫才能正常執行,這意味著每個企業都有一個。我有一個使用遷移和腳本來控製版本的中央數據庫,但這個中央數據庫不與其他數據庫通信。每個企業都有不同的版本,包括始終擁有最新版本的中央數據庫。

例子

要將數據庫更新到我的上一個版本,我應用了冪等腳本(如Entity Framework),這樣我就可以檢測到版本並從那裡繼續。假設15.11版本的業務數據庫出現錯誤,需要立即解決。我重新創建錯誤,修復它,創建一個腳本,並將更新帶到公司。現在這家公司有一個不同的版本,比如 15.11.1。以及它包含在中央數據庫中的最後一個腳本。

所以我的問題來了,如果我決定將來將同一個數據庫更新到最新版本,我的冪等腳本不會再次應用此更改嗎?

另一個問題是:我可以在數據庫中應用不同的腳本嗎?即如果更新中有 5 個腳本,我只想應用#1、#3 和#5。如果我已經應用了更改,這個想法是為了減少更新時間。

我對各種意見持開放態度,如果我有一些錯誤的概念,請隨時糾正我。

謝謝你。

據我了解,冪等腳本可以多次應用,但效果與只應用一次相同(即可以重新執行而不會產生不利影響)。絕對值得將冪等腳本作為您的發布的一部分,這樣如果您不小心多次執行同一個腳本,您就不會造成問題。

在管理部署和僅部署 5 個腳本版本中的 #1、#3 和 #5 腳本方面,可能值得研究一些用於管理數據庫之間部署的軟體。一個這樣的例子來自 Redgate,他們正在開發SQL Release

這種類型的軟體將能夠在環境之間自動部署更改,比較每個環境,並且應該只應用所需的版本更改。它們有助於防止環境之間的錯誤部署,並且比跳過腳本更安全!

引用自:https://dba.stackexchange.com/questions/83102