簡體   English   中英

在安裝過程中更新數據庫

[英]Updating Database during installation

我有一個C#應用程序,該應用程序很大程度上是管理物業租賃的數據庫的前端。 但是,數據庫隨軟件一起發展,有時需要更新。

我希望能夠從安裝程序更新數據庫,而不是部署一組sql文件和msi。 我已經考慮過將其寫入程序的啟動中,但是如果兩個人同時啟動該程序,可能會引起一些有趣的事情。 該程序安裝在單個服務器上,然后遠程運行我的幾個人,因此在安裝程序中進行更新不會有這個人。

在安裝程序期間如何更新數據庫?

我記得我繼承的一個應用程序也遇到類似的情況,編寫該應用程序的程序員在數據庫中鍵入了兩個字段,一個-在任何安裝程序運行之前的當前版本號都會檢查版本號,以便數據庫是否具有更高的版本號。版本比安裝程序嘗試的版本高,安裝將中止,其次,在存儲版本/內部版本的同一表中,另一列存儲數據庫的狀態,即正在運行/正在升級等,因此,如果版本號較舊,則說明是第二次檢查,如果安裝已經在進行中,則第二次啟動的安裝程序將中止。 即使在同時發射非常接近的情況下,安裝者之一也會首先獲得該鎖。

編輯:中止等,我的意思是升級的數據庫部分將無法運行。

如您所知,使用最終用戶安裝來更新生產數據庫可能會有風險。 以下是一些選擇:

  1. 如果您不可以進行安裝,則可能需要指示客戶與您聯系進行安裝,以便您逐步完成安裝過程。

  2. 在將來的版本中,在數據庫中包括一個特殊的表。 安裝開始時,將記錄寫入該表,指示升級正在進行中。 安裝運行時,不允許任何客戶端連接。

  3. 不要覆蓋現有的生產數據庫。 而是通過腳本將新數據庫還原到服務器,然后使用SSIS進程將數據從先前版本的數據庫移動到新數據庫。 無論如何,這都是一個好主意,以防止可能破壞其生產數據庫的安裝失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM