2008-09-22 86 views

回答

1

不知道有關使用Windows安裝程序集成,但是你可能會考慮紅門SQL Packager

+0

紅門有一些偉大的工具與SQL Server的工作...我會建議您檢查出來。 – mattruma 2008-09-22 15:21:51

+0

它需要錢。 – Shimmy 2012-04-18 21:34:01

0

InstallShield讓您執行SQL腳本作爲安裝的一部分。雖然沒有嘗試過,但只記得上次我查看時它在GUI上!

0

你可能想看看SubSonic的migrations。首先,這是版本數據庫的好方法。其次,弄清楚如何從安裝程序運行完全相同的腳本不應該太難。

4

根據我的經驗,當您的軟件連接到數據庫時,而不是在安裝時,最好執行db架構更新。你想要做以下的事情:

  • 確定與一個唯一的標識符,每個模式變化,如GUID
  • 包括你可以用你的產品應用編譯到資源的所有變化,例如列表在構建過程
  • 有一個表在數據庫中保存已應用
  • 當您連接到數據庫,掃描該表,看是否需要作出改變的架構更改的列表

這是足夠簡單的,可以在您的運行代碼中完成,但在您的安裝程序中卻不那麼容易。

0

我認爲你的軟件的每個版本都有一堆數據庫更新。爲什麼不將這些更新作爲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指令時,還要跟蹤他們的「同行」,以便你可以在任何時候(例如調試時間)將你的數據庫結構降級到先前的版本。

2

Adam Cogan建議創建一個補丁表,用於記錄超出最初版本的每個更新。而不是通過SSMS或企業管理器更改您的模式,確保您腳本每個更改...這兩個應用程序允許您腳本您的更改,然後不應用它們。將腳本保存到文件(可能將它們添加爲資源),然後在每次運行應用程序時檢查修補程序表。

亞當有一定的規則,以更好的SQL數據庫這裏

http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterSQLServerDatabases.aspx