2011-03-05 94 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