2010-09-24 65 views
3

我都拿出2層的方法來與我的WPF應用程序安裝本地數據庫:工具或與客戶端應用程序安裝數據庫最佳實踐

  1. 創建數據庫的備份,然後在安裝程序中恢復通過SMO
  2. 腳本的數據庫安裝,並通過ADO執行它或OSQL.EXE

我需要提供的升級路徑,而不是隻是刪除當前安裝的數據庫。

還有其他方法更靈活嗎?管理工具是否更好/更容易?

回答

1

我見過的支持增量升級的方法都是維護一組「改變腳本」的東西。對於初始安裝,您可以將已知的「乾淨」備份還原到新的數據庫中,或者可以使用SQL腳本或ORM工具將架構投影到DMBS中。 NHibernate能夠根據映射配置生成模式,並且您可以從安裝程序中設置此行爲。

一旦安裝了數據庫,就必須逐步更新。這通常意味着爲數據庫的每次更改創建一個腳本,並將它們包含在安裝包中,並帶有一個「runner」(一個簡單的批處理過程),該過程可以旋轉腳本並對數據庫執行腳本。如果它們依賴於訂單,請確保您的文件結構考慮到這一點(但通常情況下,最好先組合兩個腳本)。還要確保變化不是「破壞性」的。例如,向表中添加列不能涉及刪除和重新創建表,即使它的代碼少。更改必須是可重複的或不重複的,因爲您可能必須包含相同的腳本兩次。這可能意味着要跟蹤您執行的腳本的名稱,和/或通過讓每個腳本檢測到它在執行前所做的更改尚未完成。

請記住,如果您使用視圖,存儲過程或SQL函數,則可以隨意刪除和重新創建這些視圖,而不會影響數據。

最後,確保在執行更新之前關閉正在更新的數據庫的所有連接,以避免不可預知的行爲。

1

對於初始安裝,請執行db的恢復。始終用應用程序發送當前版本的數據庫。

對於更新要求,您需要更改腳本列表,每個新版本都有一個。我喜歡數據庫包含版本的RoR方法。

這可以更容易地檢查數據庫所在的版本,並在其後應用所有更改腳本。