簡體   English   中英

管理大型團隊中的Sql Server數據庫版本控制

[英]managing Sql Server databases version control in large teams

在過去的幾年里,我是唯一一個處理我們為Web項目創建的數據庫的開發人員。 這意味着我可以完全控制版本管理。 我無法跟上所有的數據庫工作,我想讓其他開發人員進入這個循環。

我們使用Tortoise SVN並將所有存儲庫存儲在內部的專用服務器上。 有些客戶要求我們不要將我們的真實數據放在辦公室服務器上,因此我們只保留可以生成數據庫結構的腳本以及創建有用假數據的腳本。 其他時候,我們的客戶希望我們在開發機器上獲得最新信息。

那么大型開發團隊使用什么工作流來處理版本管理和數據庫共享。 大多數開發人員更喜歡將數據庫部署到其開發計算機上的Sql Server實例。 我們應該嗎

  1. 保留SVN中每個數據庫的腳本,並使開發人員在進行微小更改時導出新腳本
  2. 在完成更改后分離數據庫並將MDF文件提交到SVN
  3. 將所有開發副本放在內部網絡上的服務器上,並強制開發人員通過遠程桌面進行連接以進行修改
  4. 我沒有想到的其他一些選擇

從不在開發源代碼樹中有MDF文件。 MDF是部署應用程序的結果,而不是應用程序源的一部分。 從發展來源的角度思考數據庫是地獄的捷徑。

所有開發可交付成果應該是部署或升級數據庫的腳本。 任何變化,無論多小,都采用腳本的形式。 有人建議使用diff工具,但我認為它們是一個老鼠洞。 我支持版本數據庫元數據並具有從版本N升級到版本N + 1的腳本。 在部署時,應用程序可以檢查當前部署的版本,然后運行所有將版本升級到當前的升級腳本。 沒有腳本可以直接部署當前版本,新部署首先部署數據庫的v0,然后進行所有版本升級,包括丟棄不再使用的對象。 雖然這聽起來有點極端,但這正是SQL Server本身如何跟蹤發布之間數據庫中發生的各種變化的原因。

作為簡單的文本腳本,所有數據庫升級腳本都像其他任何源一樣存儲在版本控制中,並跟蹤更改,差異和簽入審核。

有關更詳細的討論和一些示例,請參閱版本控制和您的數據庫

選項1)。 每個開發人員都可以擁有自己最新的DB本地副本。 (最新的含義,從最新版本控制的腳本(基本+增量更改+基礎數據+運行數據)重新創建。為了使這項工作,您應該能夠“一鍵”在本地部署任何數據庫。

使用Visual Studio Database Edition等工具確實不會出錯。 這是VS的一個版本,用於管理數據庫模式等等,包括對目標服務器的部署(更新)。

VSDE與TFS集成,因此所有數據庫模式都在TFS版本控制之下。 這成為架構管理的“真理來源”。

通常,開發人員將使用本地開發數據庫,​​並通過將其與VSDE項目中的模式同步來使其模式保持最新。 然后,當開發人員對他/她的更改感到滿意時,他們會被檢入TFS,然后可以進行構建然后部署。

VSDE還支持重構,模式比較,數據比較,測試數據生成等。 這是一個很棒的工具,我們用它來管理我們的模式。

在以前的公司(在每月迭代中使用Agile)中,.sql文件被檢入版本控制,並且完整構建過程的(可選的)部分是從生產重建數據庫然后按順序應用每個.sql文件。

在迭代結束時,.sql指令被合並到腳本中,該腳本創建數據庫的生成版本,並移出腳本文件。 因此,您只應用當前迭代的更新,而不是直到項目的開頭。

你看過一款名為DB Ghost的產品嗎? 我沒有親自使用它,但它看起來很全面,可能會在你的問題中提供另一種選擇作為第4點。

暫無
暫無

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

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