2010-07-29 34 views
7

版本化我的整個數據庫的最佳方法是什麼?使用DVCS在版本控制下獲取我的數據庫[Mercurial]

創建爲每個數據庫對象的文件(表,視圖,procedsure ..)或者更確切地說,有一個文件的所有DDL腳本和任何新的變化將在一個單獨的文件中提出?

如何處理數據庫管理器工具中所做的更改?

我想對任何RDBMS的通用解決方案。

還有其他的選擇嗎?

+0

微軟SQL Server可以對源安全的版本控制來把,我不會告訴其他類似的解決方案。我真的很想找到適用於其他數據庫的其他解決方案。 – 2010-07-29 11:27:29

+0

@Flakron Bytyqi:** Source Safe ** ?!如果[Eric Sink](http://www.sourcegear.com/vault/)看到此消息,他將親自前往你的房子,並用銷售發票將你截至半死。 – 2010-10-27 03:12:23

回答

1

如果你需要通用的解決方案 - 擺在腳本的一切(簡單的文本文件),並把下版本控制系統(可以使用任何的VCS)。

將相似的數據庫對象到腳本將取決於您的要求。

所以,你可能例如:

Store表/索引/在一個或幾個腳本 在單個腳本的每個過程商店或合併小程序到一個腳本。

但是需要記住一件重要的事這種做法:如果直接在數據庫中更改表/視圖/過程不要忘了更改腳本並沒有創建/重建/編譯您更改腳本後DB數據庫對象。

2

看一看這個post

3

我一般和一個大的水銀助推器的巨大VCS迷,但我真的想你會走上錯誤的道路。

VCSS不只是反覆變化,「是什麼」,他們也即將在回答「誰」,「何時」和「爲什麼」。對於一個數據庫來說,這些答案對於VCS來說是不太有趣或難以提供的。如果你每晚做出口和承諾,「誰」永遠是「cron」,「爲什麼」永遠是「午夜」。

其他的事情,現代VCSS真的很好幫助你合併來自多個分支的變化。這在數據庫領域不太適用。你很少會說「我想要這個表結構,但是這個數據」,如果你做文本/差異合併不會幫助你很多。

,做該做的事「是什麼」和「何時」非常好是一個增量備份系統,而這可能是更好的選擇。

在工作中我們使用Tivoli和在家裏我使用rdiff進行備份和口是心非,但也有很多偉大的選擇。

我想我的一般經驗法則是「如果它是類型化的手被人那麼它就是源代碼控制,如果生成它/導出,然後它會在增量備份」

當然你可以使這項工作,但我認爲它會買更多的傳統備份解決方案。

+0

我傾向於不同意。我們與幾位開發人員一起開發我們的數據庫並不斷髮展,事情變得一團糟,因爲我們無法輕鬆跟蹤對代碼的更改。數據不是問題,可以通過定期備份來處理。這是需要結構的代碼。 – thomaspaulb 2012-01-23 13:32:57

1

SQL Source Control目前支持SVN和TFS,但水銀請求得到迅速增長,我們希望很快有這樣的故事。

我們使用UserVoice的測量需求,所以請,如果你在這個有趣的是相應的投票:http://redgate.uservoice.com/forums/39019-sql-source-control

+1

好消息 - SQL Source Control現已發佈,支持Mercurial(以及具有合適命令行的任何源代碼管理系統)。 – 2011-04-02 19:26:31