2

我是C#編程新手,最近剛剛從Ruby on Rails的工作中接觸到它。在RoR中,我習慣於能夠爲數據庫編寫模式遷移。我希望能夠爲我的C#/ SQLServer項目做類似的事情。如何使用VS 2005版本SQL Server架構?

對於VS 2005工具集,是否有這樣的工具?

直接在VS 2005之外使用SQL Server的RoR遷移是明智的嗎?換句話說,我會處理使用ActiveRecord的所有模式版本:從Rails遷移,但沒有別的。

如果我使用其他工具處理C#和VS 2005以外的遷移,是RoR ActiveRecord:遷移最好用的東西還是有更適合的東西?

+0

我很想知道你到底採取了什麼方法? – 2010-12-15 23:27:42

+0

@大衛我最終轉換了工作。新工作使用MySQL。儘管C#將成爲技術棧的一部分,但這仍然是我的一個相關問題。我還沒有在我的新工作中實施解決方案,但迄今爲止的領先者是liquibase。 – Mike 2010-12-18 19:42:35

回答

0

我一直樂意與DBDeploy.NET處理我們的數據庫版本。我當前的項目使用C#+ SQL 2008.DBDeploy未集成到Visual Studio中,但我想你可以在IDE中使用一些自定義外部工具條目來實現它。

當然還有其他工具可以工作。我不熟悉Ruby ActiveRecord:Migration,但是如果您已經有使用這個特定工具的經驗,爲什麼不堅持使用它?就Visual Studio內部的數據庫版本控制/遷移而言,我相信您需要升級到數據庫專業版(這是我最後檢查的此版本的額外費用)。

總之,我會用你知道的去做。目前恕我直言,大多數用於數據庫版本控制的免費工具仍然有些不足。如果您想了解關於DBDeploy.NET的更多信息,您可以從它從此處移植的原始項目中讀取它 - 另外,請記住,DBDeploy工具是跨平臺的(支持許多DB系統,不僅僅是SQL Server & Oracle)和開源。

0

對於分發應用程序,我最喜歡的方法實際上是一個內置的:Version Control and your Database

我使用數據庫擴展屬性來存儲當前磁盤上部署的模式版本,然後運行一個內部升級陣列,該陣列維護磁盤版本=>升級腳本到下一個版本之間的映射。在啓動時,應用程序將運行升級陣列中的步驟,直到磁盤上的版本與當前應用程序版本相匹配。所以升級會經歷所有的中間版本。部署一個新的站點(一個新的位置)會遍歷每個模式版本,有時會創建和刪除不再使用的對象。這可能看起來很奇怪,但最終應用程序可以部署在之前的任何以前發佈的版本中。如果客戶有一個3年前的模式,每個人都忘記了它包含的內容,那麼應用程序知道如何將它更新,總是很棒。

我喜歡這種方法比較差異比較工具(如VS DB項目集成),因爲它是可測試的,並且可以更好地控制任何升級所採取的確切步驟。 Diff工具會執行各種可疑的操作,如複製表和重命名,這些工作對於部署量爲+ 1TB(我的應用必須處理)起作用。

如果您期望的數據大小合理小(< 100 Gb),我會考慮基於差異的工具。基於vsdbcmd的VS DB項目部署在這種情況下工作正常。此外,如果您的部署目標只有一個位置(即只有一個目標的Web應用程序,網站數據庫),那麼升級任何以前版本的能力就會失去吸引力。