2

我們正在嘗試VS2010的數據庫項目新的發展,使用下面的開發週期的變化:如何合併從源控制VS2010數據庫項目對當地發展DB

  • 使用管理Studio開發的變化在本地數據庫實例(使用設計師等)
  • 使用VS2010架構比較同步/導入這些更改VSDB項目
  • 檢查在VSDB項目和運行自動化構建/測試等

當我想從源頭控制「獲得最新的」,然後我:

  • 更新從源頭控制
  • 使用模式的VSDB項目文件進行比較,以推動從項目更改到我的本地數據庫實例

這是它開始分解......由於架構比較正試圖同步兩個版本,它試圖解開我到我的本地數據庫做出我自己的特色發展的一部分的任何變化。

顯然,您可以告訴模式比較以跳過對已修改對象的更改,但可悲的是,這並不總是正常工作:http://connect.microsoft.com/VisualStudio/feedback/details/564026/strange-schema-compare-behavior-sql-2008-database-projects

基本上,問題的存在是因爲VSDB項目中的定義不會自動與我的本地數據庫同步;因此我需要使用Schema Compare在每次我發生變化時都做一次'可憐的人合併'。

一個可能的解決辦法是:

  • 使用架構比較同步從我的本地數據庫的VSDB項目第一
  • 更新從源頭控制VSDB項目中的任何改變(因此使用源控制工具做合併,而不是架構比較)
  • 架構比較從源代碼控制將更改我的本地數據庫實例

...這遠非理想。

RedGate SQL Source Control在這方面更好嗎?

那麼新的'Juneau'SQL工具集呢?

+1

爲什麼不簡單地使用數據庫項目的方式來使用它們。停止對數據庫進行更改! –

回答

1

您使用「部署」將源更改推送到數據庫。從頂層的「生成」菜單中部署解決方案,或者您可以右鍵單擊解決方案資源管理器中的項目,然後選擇「部署」。

部署可在項目屬性中進行配置。

HTH

0

既然你提到的其他可能的解決方案,我將闡述我們的商店如何管理數據結構的變化和傳播史到dev分貝的。

爲了跟蹤和應用差異,我們編寫了一個C#應用程序,可以將數據庫操作有效地提取到我們追加到Action列表的類中。引擎動態加載代表數據庫版本的模塊,並將模塊中的每個項目添加到該版本升級要執行的操作列表中,然後處理該列表。操作包括DataRowInsertAction,TableCreateAction,ColumnModifyAction等。

使用此方法的一個好處是我們能夠將標準的.cs文件提交到subversion,並且用戶可以通過檢出將自己的開發數據庫更新爲最新版本最新的和runnig它。另一個巨大的優勢是我們可以定位多個數據庫引擎,因爲Actions本身知道基於哪個數據庫引擎的目標來呈現SQL。


作爲一個附註,我們使用AdeptSQL來比較數據庫,並且喜歡它。它會創建一個完整的差異列表,並且您可以生成一個腳本以指向任一方向(給出數據庫'A'和數據庫'B',將A升級到B或將B降級到A.)

對於小額外費用,它們還提供擴展功能來執行數據差異。

http://www.adeptsql.com/

+0

-1:他用的數據庫項目 –

+0

@JohnSaunders我想你錯過了,他是要求提供有關替代解決方案(展鵬,朱諾)信息作爲他的問題的一部分點。 –

+0

你說得對。我會刪除downvote,但您必須先編輯答案。僅供參考,我仍然認爲你的答案是錯誤的。 –

0

你的過程是向後這就是爲什麼這是困難的。更改應該從VSDB流向數據庫,而不是其他方式。試試這個:

  1. 使用設計師Management Studio中,如果你喜歡他們,但腳本 了所做的任何更改,並將它們添加到您的VSDB項目。
  2. 而不是使用架構比較使用內置Deployment functionality。而不是用數據庫腳本的工作,推動了 - 這將自動腳本,並在一個單一的點擊
0

SQL源控制背後的想法基本上是把發展過程中其掌門部署到本地數據庫的增量變化對數據庫的更改,對數據庫進行更改,SQL Source Control計算增量並更新本地腳本,並允許您將更改提交到源代碼管理系統。

SQL源控制目前只適用於SQL Server Management Studio中集成了,但現在有一個VS包叫做SQL連接,你可以在VS 2010中使用相同的方式工作,就像在SQL源控制。 http://www.red-gate.com/products/sql-development/sql-connect/index-2