2009-09-01 26 views
2

請原諒,今天是我第一天嘗試使用TeamCity設置CI環境。我正在開發一個ASP.NET/Sql Server應用程序,迄今爲止這麼好。 MSBuild是我的提供者。如何將我的數據庫包含在持續集成過程中?

我想知道當涉及到自動確保對本地數據庫的更改作爲集成過程的一部分上傳到測試服務器時,選項是什麼。現在我不太確定我想朝着DBGhost的方向自動同步模式更改,我很樂意將測試服務器上的數據庫替換爲本地數據庫的副本。

我在這裏有什麼選擇?

編輯:進一步的調查顯示,RedGate SQL產品對此很有幫助。他們並不便宜。他們在持續集成過程中使用他們的產品有一個很好的白皮書:http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf

回答

4

首先,我認爲你的數據庫應該包含在你的源代碼控制策略中。實現這一目標的基本原理已經在K. Scott Allen series中精美地總結出來了。您也可以檢查Evolutionary Database Design by Martin Fowler。有關更多實用信息,請查看How should you build your database from source control?的答案。

正如我在my answer中寫的,我維護了兩套腳本:一套可以從頭構建數據庫,另一套可以將給定數據庫從一個版本升級到最後一個。作爲CI策略的一部分:

  • 應使用這些腳本從頭開始重建CI服務器上的數據庫。然後您可以檢查您的腳本是否處於工作狀態。
  • 在完美的世界中,我應該能夠執行從版本N-1到數據庫版本N的升級,並將獲得的模式與先前數據庫的模式進行比較。我仍在努力...
  • 測試數據應該注入數據庫,允許執行應用程序的單元測試(您可以對此執行use bcp)。
+0

另外一個複雜因素是我已經擁有了當前正在生產的系統的所有權,並且數據庫包含大量需要遷移到任何新架構的信息。爲了使事情更加煩人,在開發過程中,新的數據將被插入到生產系統中。 – Alex 2009-09-04 14:00:27