2010-05-11 118 views
0

我的公司使用虛擬機作爲我們的網絡/應用程序服務器。如果出現問題,這可以非常容易地回滾部署。但是,如果應用程序服務器部署還需要數據庫部署,並且我們必須回滾,否則我有點茫然。如何在不丟失數據的情況下回滾數據庫模式更改?我能想到的唯一的事情就是編寫一個腳本,將腳本放回/恢復到原始狀態。這真的是最好的方法嗎?如何在不丟失新數據的情況下回滾數據庫部署?

回答

1

一般來說,你不能這樣做。

但是,假設這種回滾有意義,這意味着您試圖保留的數據與您希望恢復的模式更改無關。對付它

一種方法是:

  • 只備份數據(腳本),
  • 恢復模式以舊的和
  • 恢復數據

如果模式更改不會使創建的腳本無效(例如,更改列數很棘手),上述方法將很好地工作。

question詳細介紹了MS SQL中可用於生成腳本的工具。

2

但是,如果你確實刪除了列,那麼你將會丟失數據,因爲那些列/表(據說)會包含一些數據。由於我認爲任何回滾通常都是暫時的,因爲發現了一個錯誤,所以回滾是爲了在修復時進行回滾,然後重新安裝或多或少相同的更改,如果用戶可能會感到不安您丟失了這些數據,並且系統修復後必須重新輸入。

我建議你應該只允許添加表和列,不要修改或刪除,那麼你可以只回滾代碼並保持原樣,如果你有很多回滾可能會導致一些未使用的列,但不應該經常發生這樣的情況,即有人錯誤地添加了表/列,在這種情況下,DBA可以手動刪除它們。

相關問題