2010-09-06 57 views
3

我使用github維護版本和代碼同步。 我們是兩個團隊,我們位於不同的地方。數據庫的子版本(我想要的東西在數據庫中的數據值,而不是架構)

我們如何確保我們的數據庫是同步的。

更新: -

我Rails開發。但是,這些天我正在努力drupal項目(其中數據庫是變化的中心)。所以我想確保團隊必須有一個同步的數據庫。也是各種表中的值。

我需要它使我們的數據值同步的東西。

集中式數據庫是一個很好的解決方案。但是,事情變得不安,如果你使用Visual Studio,那麼你可以腳本數據庫表,視圖,存儲過程和函數從數據庫解決方案.sql文件,然後檢查這些版本控制,以及當有人脫機工作

+1

得挺這幾個答案和與其相關聯的問題:http://stackoverflow.com/questions/4952/database-version-control – serg10 2010-09-06 10:07:59

回答

1

看一看紅門SQL源控制 - http://www.red-gate.com/products/SQL_Source_Control/

說實話我從來沒有使用它,但他們的其他軟件太棒了。如果您只想保持數據庫架構同步(而不是完全源代碼管理),那麼我以前使用他們的SQL Compare產品非常成功。

(PS。我不爲他們工作!)

2

- 其我目前在做我的工作場所

在您不使用Visual Studio,那麼你仍然可以在您的SQL作爲.sql文件的腳本[但更多的工作],然後版本需要控制他們

+1

這是怎麼VS的具體情況?如果你使用其他任何東西,你幾乎可以做同樣的事情:) – 2010-09-06 09:38:42

+0

+1,但馬可的權利:) – 2010-09-06 09:42:15

+0

這是編輯一旦我寫它說數據庫解決方案的視覺工作室 - 對不起,週一早上嗜睡:) – stack72 2010-09-06 09:44:48

0

這些都是一些準備。

  1. 使用相同的數據庫。建立一個每個人都可以連接的中央數據庫。這樣你就可以確保每個人都使用同一個數據庫。

  2. 每一個變化之後,導出數據庫,並將其提交到VCS。這個選項需要紀律和體力勞動。

  3. 使用模式的某種其他定義。例如,Doctrine for php有能力從一個yaml定義構建數據庫,這個定義可以存儲在vcs中。這可能是更容易的自動再點2

  4. 使用其他一些軟件/腳本更新數據庫。

+0

花了我一點時間才意識到你的意思是4種選擇,而不是4個步驟! – 2010-09-06 09:43:15

+0

有沒有像github的解決方案。 – 2010-09-06 13:32:57

-1

嘗試Wizardby。這是我的個人項目,但是我在之前的幾個工作中使用過它,取得了很大的成功。

基本上,它是一個工具,它可以讓你指定所有更改數據庫架構中獨立於數據庫的方式,然後這些更改應用到所有的數據庫。

+0

我想要一些數據庫中的數據值。 – 2010-09-06 12:12:58

1

您可以將Sql Source Control和Sql Data Compare一起使用,以同時用於源代碼控制:模式和數據。這裏是來自瑞蓋特的文章:Source controlling data.

0

我感覺到你的痛苦。讓SQL Server在SVN上表現出色,我遇到了很大的麻煩。最後,我選擇了共享數據庫解決方案。我每天運行一個擴展的腳本來將版本控制的所有模式定義(特別是存儲過程)備份到文本文件中。由於這種改變的數量有限,所以效果很好。

我現在也將這種技術用於我們的主要項目和個人項目。唯一的缺點是它依賴於始終連接。其他答案表明完整的數據庫版本控制非常耗時,我傾向於同意。對於「實時」升級,我們使用Red Gate工具,它們既進行模式和數據比較,也很好地工作。

0

http://www.red-gate.com/products/SQL_Data_Compare/。我們使用這個工具來保持我們公司的數據庫同步。後來我們有一些特定的要求,所以我們必須編寫自己的代碼進行同步。取決於數據庫的複雜程度以及發生的變化。如果你有時間沒有人工作,並且你可以鎖定數據庫進行同步,那就簡單多了。

0

結賬OffScale DataGrove

本產品跟蹤對整個DB的更改 - 架構和數據。您可以在任何時間點標記版本,並使用簡單的命令返回到數據庫的舊狀態。它還允許您創建相同數據庫的虛擬,單獨的副本,以便每個團隊成員可以擁有自己的單獨數據庫。所有虛擬副本都被追蹤到同一個存儲庫中,因此將數據庫還原到其他人的版本非常容易(您只需簽出他們的版本,就像使用源代碼管理一樣)。這意味着您的所有數據庫始終可以同步。

關於一個集中的數據庫 - 就像你不想使用相同的源代碼一樣,你不想在同一個數據庫上工作。這意味着你會不斷破壞彼此的代碼,並在每次有人改變數據庫中的某些內容時建立它們。

我建議你爲每個開發人員使用單獨的數據庫,並使用DataGrove同步它們。

免責聲明 - 我在超出標度工作:-)

相關問題