2012-10-17 110 views
7

我有Git Source Control Provider安裝並運行良好。如何使用Visual Studio的Git源代碼管理提供程序版本控制SQL Server數據庫

對於Visual Studio項目,即。

問題是,每個這樣的項目都是緊密地綁定到SQL Server數據庫。

我知道how to version control a database在自己的.git庫,但是這既不方便也不真正強大的,因爲理想的我希望同樣的ADD,COM​​MIT,標籤和分支的命令,在兩個目錄樹同時操作,以同步的方式。

有沒有辦法用我所描述的方式用Visual Studio的Git Source Control Provider來連接SQL Server數據庫?

+1

@marc_s感謝您糾正錯字。 – Souper

回答

4

您可以使用SQL Server Data Tools將您的數據庫架構存儲爲Visual Studio項目,然後使用Git版本控制此項目。

+0

我不知道可以將數據庫模式存儲爲Visual Studio項目。那很棒!我原本以爲使用SSMS作爲'腳本數據庫'''DROP和CREATE To'來將整個東西作爲基於文本的腳本導出到Visual Studio解決方案的目錄中,但是像您描述的集成解決方案聽起來更有希望。 「SQL Server數據工具」的哪個工具實際導出?我是否必須安裝整套工具? +1 – Souper

+1

這是一個包,你可以在這裏下載:http:// msdn。microsoft.com/en-us/data/hh297027在這裏你有一些documwntation:http://msdn.microsoft.com/en-us/library/hh272702(v=vs.103).aspx或視頻:http:// msdn.microsoft.com/en-us/data/hh297028 –

0

作爲數據庫版本控制空間5年(作爲產品管理總監DBmaestro),並且作爲DBA工作了二十多年,我可以告訴你一個簡單的事實,即不能像你那樣處理數據庫對象處理您的Java,C#或其他文件並將更改保存在簡單的DDL腳本中。

有很多原因,我會僅舉幾例:

  • 文件是開發人員的電腦上本地存儲和改變他/她 品牌不影響其他開發人員。同樣,開發人員也不受她的同事所做更改的影響。在數據庫中,這是 (通常)不是這種情況,開發人員共享相同的數據庫 環境,因此任何提交給數據庫的更改都會影響 其他人。
  • 使用簽入/提交更改/ 等(取決於您使用的源控制工具)完成發佈代碼更改。此時, 將來自開發者本地目錄的代碼插入源控制存儲庫的 中。希望獲得最新 代碼的開發人員需要從源代碼管理工具請求代碼。在數據庫中, 更改已存在,並且影響其他數據,即使它不是登錄到存儲庫的 也是如此。
  • 在文件簽入過程中,源代碼管理工具執行衝突 檢查以確定在修改本地副本期間是否有相同的文件被其他 開發者修改並簽入。 再次在數據庫中沒有檢查。如果您從本地PC上更改 的程序,同時我使用 代碼修改了本地PC上的相同程序,則我們會覆蓋彼此的更改。
  • 代碼的構建過程是通過將代碼的標籤/最新 版本的代碼執行到空目錄,然後執行編譯 - 編譯完成的。輸出是我們在其中複製&替換現有的 的二進制文件。我們不在乎以前是什麼。在數據庫中,我們不能 重新創建數據庫,因爲我們需要維護數據!此外, 部署還會執行在構建 過程中生成的SQL腳本。
  • 執行SQL腳本時(使用DDL,DCL,DML(對於靜態 內容)命令),假定 環境的當前結構與創建腳本時的結構相匹配。如果不是, 那麼您的腳本可能會失敗,因爲您試圖添加新列,其中 已存在。
  • 將SQL腳本作爲代碼進行處理並手動生成它們將導致 語法錯誤,數據庫依賴性錯誤,不可重複使用的腳本,這會使開發,維護和 測試腳本的任務複雜化。另外,這些腳本可能在 環境中運行,與您運行 的環境不同。
  • 有時版本控制庫中的腳本不匹配 被測試的對象的結構,然後在生產中發生錯誤 !

還有很多,但我認爲你得到了圖片。

我發現,工作是這樣的:

  1. 使用強制執行的數據庫對象 退房/簽入操作的強制版本控制系統。這將 確保版本控制存儲庫匹配 簽入的代碼,因爲它讀取操作中的簽入 中的對象的元數據,而不是手動完成的單獨步驟。這也允許 幾個開發人員在同一數據庫上並行工作,而 阻止他們意外地覆蓋每個其他代碼。
  2. 使用利用基線的影響分析作爲 比較的一部分來識別衝突,並確定如果差(當 源控制 存儲庫和數據庫之間的比較對象的結構)是一個真正的變化來自 發展起源或者源於不同路徑 的差異,然後應該跳過它,例如不同的分支或 緊急修復程序。
  3. 使用知道如何使用UI或使用API​​一次執行多個 架構的影響分析的解決方案,以最終實現 自動構建&部署過程。

我寫的這篇文章發表於here,歡迎您閱讀。

+0

這是一個很好的答案,值得更多關注!我可以補充一點,如果您使用[QueryFirst](https://marketplace.visualstudio.com/items?itemName=bbsimonbb.QueryFirst)管理您的應用程序的SQL,則該工具可以爲每個查詢生成自檢方法,並將其編譯到您的二進制文件中。因此,您可以集成測試生產數據庫的二進制文件,並確保所有查詢都能運行,並返回與開發應用程序時相同的列。 QueryFirst是*我知道的唯一*工具將執行此操作。免責聲明:我寫了。 – bbsimonbb

相關問題