如何在安裝產品更新時更新SQL服務器數據庫?是否有任何工具可以與Windows安裝程序集成? 我的典型模式的變化是:使用軟件更新更新SQL Server數據庫架構
- 添加/刪除列
- 添加/刪除表。
- 添加視圖。
- 添加/更改索引。
如何在安裝產品更新時更新SQL服務器數據庫?是否有任何工具可以與Windows安裝程序集成? 我的典型模式的變化是:使用軟件更新更新SQL Server數據庫架構
不知道有關使用Windows安裝程序集成,但是你可能會考慮紅門SQL Packager
InstallShield讓您執行SQL腳本作爲安裝的一部分。雖然沒有嘗試過,但只記得上次我查看時它在GUI上!
你可能想看看SubSonic的migrations。首先,這是版本數據庫的好方法。其次,弄清楚如何從安裝程序運行完全相同的腳本不應該太難。
根據我的經驗,當您的軟件連接到數據庫時,而不是在安裝時,最好執行db架構更新。你想要做以下的事情:
這是足夠簡單的,可以在您的運行代碼中完成,但在您的安裝程序中卻不那麼容易。
我認爲你的軟件的每個版本都有一堆數據庫更新。爲什麼不將這些更新作爲T-SQL指令編寫,在新版本的軟件首次啓動時進行測試 - 執行?只需從軟件中打開數據庫的連接,然後像發送任何SELECT或UPDATE指令一樣發送DDL指令。我也會做一些類似於Jack Paulsen的建議:用雙重身份識別系統維護這些T-SQL指令的列表:一個鏈接到它適用的數據庫/軟件版本(可以是uniqueIdentifier),另一個(數字)保持指令以串行順序(見我的例子:指令2不能說明1日前執行)
例子:
//instruction 1, batch instructions for version#2.162
USE myDatabase
GO
ALTER TABLE myTable
ADD myColumn uniqueIdentifier Null
GO
//instruction 2, batch instructions for version#2.162
USE myDatabase
ALTER TABLE myTable
ADD CONSTRAINT myTable_myColumn FOREIGN KEY (myColumn) ...
GO
對於修改,刪除的完整描述和CREATE說明,請參閱您的T- SQL幫助。只是要小心(例如)在刪除該字段之前刪除鏈接到字段的索引和約束。
你當然也可以添加一些額外的更新說明計算值加柱等
你甚至能想到的更復雜的東西,檢查是否以前升級的步驟(即導致數據庫#2版。161)正確執行。我的建議是:當你編寫這些T-SQL指令時,還要跟蹤他們的「同行」,以便你可以在任何時候(例如調試時間)將你的數據庫結構降級到先前的版本。
Adam Cogan建議創建一個補丁表,用於記錄超出最初版本的每個更新。而不是通過SSMS或企業管理器更改您的模式,確保您腳本每個更改...這兩個應用程序允許您腳本您的更改,然後不應用它們。將腳本保存到文件(可能將它們添加爲資源),然後在每次運行應用程序時檢查修補程序表。
亞當有一定的規則,以更好的SQL數據庫這裏
http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLServerDatabases.aspx
紅門有一些偉大的工具與SQL Server的工作...我會建議您檢查出來。 – mattruma 2008-09-22 15:21:51
它需要錢。 – Shimmy 2012-04-18 21:34:01