簡體   English   中英

在自動構建之前部署/運行數據庫更改

[英]Deploy/run database changes before automatic build

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

現在唯一不自動的是運行數據庫更改/腳本,我手動完成。 任何人都有提示如何自動化?

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

我的解決方案是將我的數據庫架構維護完全放在代碼中,我認為這是我迄今為止所做的最好的寫入版本:

如果不存在,如何創建“嵌入式”SQL 2008數據庫文件?

如果代碼足夠智能,可以在應用程序中或在自己的控制台應用程序中內聯升級架構,那么您應該能夠將自動架構更改集成到CI構建腳本中。

自從我編寫上述內容以來,我一直在追逐這一點 - 事實證明,我所做的與Ruby Migrations(我相信在Subsonic中也有類似功能)並沒有什么不同,除了我目前沒有“向下”能夠扭轉架構變化(一個有趣的想法,我擔心潛在的破壞性代碼“直播”)。 有一個看起來很有用的開源.NET項目Migrator.net ,但我不確定它的維護有多積極。


附錄

自從我寫這個實體框架代碼以來,它首先出現了,並且它們開始在遷移方面取得進展 - 所以現在值得一看。 但是我不認為它已經存在,並且像我看到的其他幾個選項並不簡單。 我需要把我打包並讓它可用!

有很多方法可以解決這個問題。 我在這里記錄的許多公司中使用過的方法,基本上它是處理自動化數據庫更新任務的源代碼,以及對hows和whys的一些解釋。

我還建議查看Data Dude(只是谷歌),我沒有使用它,但我的理解是它可以用於自動化db更新(可能是錯誤的)。

我會說我不建議使用數據庫比較工具來生成腳本......不需要特別小心。 問題通常是您將dev db(您的更改所在位置)與構建框db進行比較,但您的數據庫可能包含(並且可能會)您為“正在進行的工作”所做的其他更改錯誤修復您可能正在工作上。

無論如何,就像我說的那樣,有很多方法可以做,調查一些選項並選擇最適合你和你的團隊風格的選項。

快樂自動化:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM