1

我正在使用SQL Server和Visual Studio。我有一個通過CCNET自動構建。當我在SVN中提交代碼時,自動構建會運行,並且所有的單元測試都會使用模擬/存根數據運行。在自動構建之前部署/運行數據庫更改

現在唯一不自動運行的是運行數據庫更改/腳本,我手動執行。任何人有提示如何可以autometed?

回答

2

很明顯,您需要自動運行數據庫更改腳本 - 您面臨的挑戰是如何決定如何運行。答案是,您需要將模式版本存儲在數據庫(或數據庫元數據)中,並選擇相應的腳本 - 無論是從頭開始創建數據庫還是應用適當的更改。

我的解決辦法是把我的數據庫架構的維護完全在代碼中,我覺得這是書面記錄我迄今所做的最好的版本:

How to create "embedded" SQL 2008 database file if it doesn't exist?

定的代碼足夠聰明做升級該架構可以在您的應用程序中或在其自己的控制檯應用程序中聯機,您應該能夠將自動化架構更改集成到CI構建腳本中。

自從我寫了上面這段代碼以來,我一直在追求這一點 - 事實證明,我所做的與Ruby Migrations(我相信Subsonic中的一些類似的功能也不相似)除了我不' t目前有任何「向下」的能力來扭轉模式變化(一個有趣的想法,我擔心可能具有破壞性的代碼「活着」)。有一個開源的.NET項目Migrator.net看起來很有用,但我不確定它的維護方式有多積極。


附錄

自從我寫了這個實體框架代碼首先出現,他們已經開始爲與遷移進展 - 這樣會現在值得一看。不過,我認爲它還沒有那麼完美,並且像我見過的其他幾個選項並不簡單。我需要將我的軟件包打包並使之可用!

2

有很多方法可以解決這個問題。我已經在一些公司中使用了一種方法,我記錄了here,基本上它是處理數據庫更新自動化任務的源代碼,以及一些關於如何和什麼的解釋。我還建議檢查Data Dude(只是谷歌它),我沒有使用它,但我的理解是,它可以用來自動化數據庫更新(可能是錯誤的)。

我會說,我不建議使用數據庫比較工具來生成腳本...沒有格外小心。問題通常是你會比較你的開發數據庫(你的變化在哪裏)和生成框數據庫,但是你的數據庫可能包含(可能會)你爲「正在進行的工作」所做的其他修改你可能正在工作的錯誤修復上。

無論如何,正如我所說,有很多方法可以做到這一點,調查一些選項,並選擇最適合您和您團隊風格的方法。

快樂自動化:-)