2011-03-05 98 views
4

我已經玩過Ruby on rails'ActiveRecord::Migration類,我喜歡保持數據庫模式版本化的容易程度。我想在我的ASP.NET項目中做類似的事情,我想知道是否有人聽說過這樣一個工具,它可以完成除了.NET以外的其他工作。有沒有像ActiveRecord :: Migration for .NET的東西?

我沒有看到需要在C#或ruby代碼中定義我的SQL腳本,我只是想編寫SQL。但是有沒有一種工具可以管理SQL腳本並跟蹤需要運行哪些腳本才能同步?

回答

3

migratordotnet是一個數據庫版本系統很像的Ruby on Rail的遷移。其目的是自動化數據庫更改,並幫助保持這些更改在整個環境中同步。

+0

謝謝!這正是我正在尋找的!但還有一件事,如果我想編寫特定於SQL Server 2008的SQL,比如覆蓋索引或XML列或類似的東西,我該怎麼做?有沒有一種方法可以將任意SQL作爲「Up」或「Down」的一部分? – kelloti 2011-03-05 15:06:48

+1

從http://code.google.com/p/migratordotnet/wiki/WritingMigrations看起來您可以使用ExecuteNonQuery方法來執行任意SQL。 – 2011-03-06 21:44:16

+0

@大衛 - 謝謝。但我認爲你是紅門的代表。你不應該在談論我使用SQL比較:p – kelloti 2011-03-07 14:45:18

1

Visual Studio中的數據庫項目具有您需要的功能。您可以執行模式比較以跟蹤模式版本之間的差異。他們也可以處理部署,但您的部署需求可能會有所不同。

Database Projects @ MSDN

也有其他第三方工具可以被使用,如SQL由展鵬進行比較。

SQL Compare by Redgate

補充:

不幸的是,這些都不具有內在的Git支持。但是,如果你不介意自己完成大部分工作,這並不妨礙你縮小差距。

使用Visual Studio,您可以使用MSBuild自動運行與編譯操作相關的腳本/可執行文件。從那裏,你可以附加你自己與git的交互。

MSBuild Reference @ MSDN

如果你正在尋找一個工具,可以自動部署從git的架構變化,我不知道有什麼存在在這個時候,但是你可以使用SMO推出自己的產品。它具有您需要能夠腳本化SQL Server對象並針對SQL Server執行腳本的所有功能。您可能必須爲表更改(爲了安全起見)執行您自己的增量腳本,但您可以對許多其他非數據對象(存儲過程,用戶函數等)進行刪除/替換。

SQL Server Management Objects @ MSDN

+0

這些都可以在我的git倉庫中使用嗎? – kelloti 2011-03-05 00:53:09

1

Red Gate正在考慮將與SQL Source Control和SQL Compare進行集成的遷移功能。如果您對此感興趣,請考慮填寫我們的調查問卷,並告知我們您的要求。填寫調查也將使您有資格加入我們的早期准入計劃。

http://www.surveymk.com/s/migrations

+0

這聽起來像宣傳......非常有用的宣傳:)謝謝! – kelloti 2011-03-06 00:01:46