2010-01-12 88 views
6

我想要所有DB DDL代碼在CVS下。版本控制SQL Server DDL代碼

我們對我們的.NET代碼使用Subversion,但所有的數據庫代碼仍然未版本化。

我們所知道的是數據庫邏輯的重要性。我使用Google搜索,但我發現只有少數(昂貴的工具)。我相信還有其他(更便宜的)解決方案。

您建議遵循什麼方法?哪些工具最適合?

SQL Server 2005中,VS 2008 TS,TSVN

UPDATE 我們的編碼的情況是,開發者不能直接訪問到PROD DB。它只改變腳本(所以這不是一個問題)

我最感興趣的DEV環境中的所有開發人員都有完全訪問權限。
所以它發生了一個開發人員覆蓋USP以前由另一個改變。
我想必須要恢復失傳/比較賣點修訂等的可能性

UPDATE-2
創建部署腳本中,我們使用的是紅門SQL比較。
完美地工作 - 因此部署腳本不是這種情況。

回答

3

如果您還沒有閱讀過,Martin Fowler的文章Evolutionary Database Design是一個很好的開始。

這篇文章很難總結,但它描述了他的團隊在快速變化的開發過程中如何處理數據庫版本控制。他們創建了自己的工具來促進一些事情:將用戶引導至當前主人的腳本,複製任何版本的架構,以便用戶可以調試彼此的工作副本等。

對於堅實的低技術解決方案,我發現將兩種DDL腳本保存在源代碼管理中很有幫助:

  • 可從頭開始創建數據庫對象的主版本。
  • 每個開發迭代的「版本升級」腳本。

它們在一定程度上是多餘的,但非常有用(特別是在涉及到部署時)。

+0

+1這篇文章是必讀的。 – 2010-09-28 14:40:04

1

如果您使用的是Visual Studio Team Suite或Visual Studio Developer Edition,那麼您有權獲得Visual Studio Database Professional的副本。這是爲了完成你所描述的內容而設計的,等等。我們用它來管理我們的數據庫模式(代碼)。

蘭迪

2

如果你還沒有看過Visual Studio數據庫版GDR(a.k.a.「數據多德」),你一定要下載它,並嘗試一下:

http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3ad767-5f69-4db9-b1c9-8f55759846ed&displaylang=en

除其他事項外,GDR會很容易使每個開發人員保持一個屬於自己的本地副本促進團隊發展數據庫,版本腳本,創建部署腳本以將數據庫模式移動到新版本,甚至支持數據庫回滾。

如果您使用團隊系統開發者版本,它是免費的。一探究竟。

1

我們對所有的數據庫代碼也使用Subversion。由於沒有任何東西被允許進入Prod,除非它在腳本中,所以似乎沒有讓人們將所有腳本放入顛覆的問題。我們傾向於編寫alter table腳本來改變現有數據的表格,然後重新創建整個表格結構以防萬一我們需要從頭開始創建一個新的數據庫(我們通常在多個服務器上擁有相同的數據庫結構,因爲我們的一些客戶端非常大並且不希望他們的數據意外地被競爭者使用,因此支付單獨的服務器,因此可能需要再次創建整個數據庫而沒有數據。)對於不直接存儲數據的對象,我們放棄原始對象並用創建聲明。每個項目都有自己的存儲庫,並且每個數據庫也都有,因此腳本可能位於多個位置以便於部署。

但真正的關鍵是沒有人可以加載到Prod沒有腳本。我們不給予我們的開發者直接權利,所以他們在腳本中做事情沒有問題,而不是使用SSMS。

+0

+1我們正在遵循一個非常類似的程序 – 2010-09-28 14:40:58

0

看看Wizardby是否符合您的需求。

1

我寫了SMOscript它爲數據庫中的每個對象生成一個CREATE腳本。

使用此工具生成CVS覆蓋的目錄,並更新您的存儲庫。

1

您應該使用Management Studio(SSMS)並將.sql放置在源代碼管理下,可能將單個模式對象置於文件夾下。 希望這可以幫助

+1

我試過了。但是在小團隊中這花費了太多時間。所以我們決定自動化 – Maciej 2010-09-29 07:27:32