2011-03-07 65 views

回答

2

沒錯,看看紅門SQL Source Control一個選項

+0

我可以對SVN使用SQL Source控件 - Subversion嗎? – Jags 2011-03-07 12:45:11

+0

@Jags:是的。檢查站點提供了哪些列表支持的存儲庫 – gbn 2011-03-07 12:47:10

+0

@Jags - 是的,它支持SVN和TFS,支持更多即將推出的功能(Vault,Vault Pro,Mercurial,Perforce,CVS,Git和Bazaar) - http:// www .red-gate.com /產品/ SQL開發/ SQL-源控制/功能 – AdaTheDev 2011-03-07 12:47:33

0

在IDE中,你可以從紅門使用SQL源控制

否則,您可以編寫腳本的對象爲source-controlled folder。我們使用Red Gate(因爲在SQL Source Control發佈之前)

0

我喜歡爲此目的分離代碼和數據。因此,Views,StoredProcs,函數像正常一樣獲得版本控制,但對錶,索引和數據的更改會作爲增量更改進行存儲。

如果您有預算,VS2010 Team System是一個不錯的選擇,正如RedGate Sql Source Control一樣。

這就是說,推出自己的產品並不難。你需要兩個組件:

  1. 腳本拉從數據庫中的所有代碼對象到磁盤
  2. 腳本部署從磁盤代碼對象到DB

我有一些樣品如何做到這一點的https://github.com/ScottWeinstein/PSIS

0

我有一個開源工具包項目(下LGPL許可),它試圖解決與適當的數據庫架構版本(及以上)的問題上,bsn ModuleStore

基本上,它的獨立部分將數據庫模式的SQL Server數據庫對象腳本編寫到應用了標準格式的文件中,以便僅當對象確實發生更改時文件內容纔會發生更改(與腳本由VS完成,它編寫一些腳本日期等,標記所有對象,即使它們實際上完全相同)。

但是,如果您使用.NET,工具集將超越:它允許您將SQL腳本嵌入到庫或應用程序中(作爲嵌入式資源),然後讓它將嵌入式腳本與數據庫中的當前狀態進行比較。非表格相關的變更(根據Martin Fowler's definition不是「破壞性變更」)可以自動應用或根據請求應用(例如,創建和刪除視圖,函數,存儲過程,類型,索引等對象),並更改腳本(需要手動編寫)也可以在同一個過程中應用;還會創建新表格,並可選擇其設置數據。更新之後,數據庫模式將再次與腳本進行比較,以確保在提交更改之前成功升級數據庫。

根據您希望訪問數據庫的方式,工具集提供的功能甚至更多 - 它實現了一些ORM功能,並提供了一種非常好的有用的基於接口的方法來調用存儲過程,其中包括對本機XML的透明支持。 NET XML類以及TVPs(Table-Valued Parameters)作爲IEnumerable<PocoClass>

相關問題