2013-07-26 40 views
2

我想弄清楚如何在我們有兩個DB的環境中實現版本控制:一個測試和一個生產數據庫對象版本控制(不是模式)

測試。有任意數量的任務正在測試。這些對被操作對象的數量和複雜性沒有限制,這意味着我們可以有一個3天的任務來改變2個包體和一個觸發器,我們可以有一個3個月的任務來改變100個不同的對象,包括С源文件和二進制對象。

我主要關心的是基於文本的DB對象。我們需要的版本測試生產代碼,但任何任務可以去從測試生產有沒有任何定義的順序。

這意味着現在我們必須手動跟蹤對文件中的變化,每一個文件,該文件中的代碼行從去測試生產內選擇。我們使用一個非常基本的解決方案,在標題中寫入一系列帶有基於文件的版本號的註釋,並在代碼標籤中添加該序列來限定更改。

我竭力實現SVN,因爲我想創造測試生產的一個分支,其分支在測試限制每個任務,但我覺得這可能會導致許多測試在合併期間任務被移植到生產

此說,我的問題是:

  • 有自動解決此問題的方法?
  • 是否有任何數據庫特定的版本控制解決方案?
  • 如果代碼庫如此不同,我怎樣才能「鏈接」兩種環境?

回答

0

我使用SVN進行數據庫腳本的源代碼控制。

我沒有針對您的問題的技術解決方案,但我可以解釋我們使用的方法。

我們有兩組腳本 - 一個用於增量更改,另一個用於完整聲明數據庫對象和過程。

在開發過程中,我們只更新了部署期間最終使用的腳本中的增量更改。在測試期間,我們更新了腳本。 最後,在生產腳本上運行腳本後,我們更新了包含完整聲明的第二組腳本。完整的腳本被用作參考,並從頭創建一個數據庫。

+0

我的問題不在於部署,生產數據庫正在運行,我們沒有部署任何其他實例。我們只需要消除將測試合併到生產任務中的手工工作。我們一直在開發測試,每週都會有新的東西進入生產環境。 – jcd

+0

我不確定我是否理解了這個問題 - 我們也做了很多修改 - 我們只是用改變日誌的方式進行了修改。每個開發人員都必須將所有變更發送給負責集成和維護變更腳本的DBA。如果你正在尋找一個自動工具來執行這個任務,那麼我不知道(如果有一個我們可能有更多的失業DBA的)。 – haki