2009-01-01 42 views
11

假設我們有一個持續集成服務器。當我檢入時,post-hook會提取最新的代碼,運行測試,打包所有內容。什麼是使數據庫更改自動化的最佳方式?帶持續集成的SQL Server數據庫管理

理想情況下,我會構建一個安裝程序,可以從頭構建數據庫或使用某種自動同步方法更新現有的數據庫。

回答

2

如果您有機會定義和控制整個數據庫管理和數據庫創建過程,請認真對待DB Ghost - 它不僅僅是一個工具 - 它是一個過程。

如果你喜歡它,並且可以實現它,你將獲得豐厚的回報 - 但它是一種「全有或全無」的方法。推薦的。

+0

我們還使用DB Ghost(與CC.NET)。唯一的抱怨是,如果您在Stored Proc腳本中使用非ASCII字符(這是Visual Studio在使用其數據庫項目時執行的操作),它會發出警告。 – StingyJack 2009-01-01 22:30:19

0

DB Ghost的最新版本(5.0)不會遇到「非ASCII字符」問題(它只是表示該文件是UTF8編碼的),它應該能夠完全滿足您的需求。另外,如果需要,這些工具實際上可以單獨使用來執行各種功能(腳本編寫,構建,比較,升級和打包),因此只需將它們一起使用即可提供完整的端到端流程使整體價值大於其部分的總和。

實質上,爲了更改模式,您更新了在源代碼管理下保存的單個對象創建腳本和每個表插入腳本(用於引用數據),就像您開發「第一天」綠地數據庫一樣。 DB Ghost工具用於通過將這些腳本構建到全新的數據庫中(如果需要,使用持續集成),然後比較和升級目標數據庫(可以是生產數據庫的副本),從而實現整個目標。這個過程產生一個delta腳本,可以在上線過程中用於真實的生產數據庫。

您甚至可以生成Visual Studio數據庫項目並將其添加到您當前擁有的任何解決方案中。

MALC

1

我奉勸不要使用DB備份作爲發展的神器,最CI的最佳做法建議您管理的模式,過程,觸發器和視圖作爲一流的開發工件。副作用是,您可以進一步採取這一步並隨時使用它們來構建新數據庫,理想情況下,您還可以將一些數據推送到數據庫中。

下面是懸崖Notes版本讓你的腳溼了,但有很多赫然出現在這個空間: http://www.infoq.com/news/2008/02/versioning_databases_series

我喜歡的一些斯科特·安布勒已經在這裏也的想法,該網站是好的但是對於這樣一組困難的問題,這本書令人驚訝地深刻。 http://www.agiledata.org/ http://www.amazon.com/exec/obidos/ASIN/0321293533/ambysoftinc

1

你看着FluentMigrator?默認下載包括可輕鬆添加到CI的Nant腳本。免費,開源,易於使用。適用於各種數據庫。

0

我知道這個職位是舊的,但我們有一個新的解決方案,它採用以下方法:

  1. 開發腳本個別SQL的變化,並承諾他們採購 控制。
  2. 我們的程序(OneScript)從 源控件中提取更改腳本文件,對它們進行過濾和排序,並生成一個單一的 發行腳本文件。
  3. 然後,該版本腳本文件應用於 數據庫以執行發佈。

我們的主頁here更詳細地解釋了這個過程,並有一個鏈接到一個自動從Subversion掛鉤執行這些步驟的例子。在提交之後不久,開發人員會收到一封電子郵件,說明發布是成功還是有錯誤。包含PowerScript代碼。

免責聲明 - 我正在製作OneScript的公司工作。