2

我是 C# 编程的新手,最近是从使用 Ruby on Rails 开始接触它的。在 RoR 中,我习惯于为数据库编写模式迁移。我希望能够为我的 C#/SQLServer 项目做类似的事情。

VS 2005 工具集是否存在这样的工具?

直接在 VS 2005 之外将 RoR 迁移与 SQL Server 一起使用是否明智?换句话说,我将使用 ActiveRecord:Migration from Rails 处理所有模式版本控制,但仅此而已。

如果我确实使用其他工具处理 C# 和 VS 2005 之外的迁移,那么 RoR ActiveRecord:Migration 是最好使用的东西,还是有更适合的东西?

4

4 回答 4

0

如果没有 VS 团队版的数据库版,就没有内置的方法可以做到这一点。我们使用与此类似的 NANT 脚本,并使用与 Ruby 类似的日期来确定迁移文件的日期。

http://www.bottleit.com.au/blog/post/Continuous-database-integration.aspx

于 2010-06-15T14:54:16.533 回答
0

我对DBDeploy.NET处理我们的数据库版本控制感到满意。我当前的项目使用 C# + SQL 2008。DBDeploy 没有集成到 Visual Studio 中,但我想您可以使用 IDE 中的一些自定义外部工具条目来实现它。

当然还有其他工具可以工作。我对 Ruby ActiveRecord:Migration 不熟悉,但如果您已经有使用此特定工具的经验,为什么不坚持使用它呢?至于 Visual Studio 中的数据库版本控制/迁移,我相信您需要升级到数据库专业版(我上次检查此版本的额外费用)。

总之,我会选择你所知道的。恕我直言,目前大多数用于数据库版本控制的免费工具仍然有些半生不熟。如果您想了解有关 DBDeploy.NET 的更多信息,您可以从这里移植的原始项目中阅读它 - http://dbdeploy.com/ 另外,请记住 DBDeploy 工具是跨平台的(支持许多数据库系统,不仅仅是 SQL Server 和 Oracle)和开源。

于 2010-06-15T15:47:40.283 回答
0

对于分发应用程序,我最喜欢的方法实际上是一种内部构建的方法:版本控制和数据库

我使用数据库扩展属性来存储当前在磁盘上部署的架构版本,然后运行一个内部升级数组,该数组维护磁盘上版本 => 升级脚本到下一个版本之间的映射。在启动时,应用程序会运行升级数组中的步骤,直到磁盘版本与当前应用程序版本匹配。因此,升级会通过所有中间版本。部署新站点(新位置)会遍历每个模式版本,有时会创建和删除不再使用的对象。这可能看起来很奇怪,但最终应用程序可以部署在任何以前发布的版本上。如果客户拥有 3 年前的架构,每个人都忘记了其中包含的内容,那么该应用程序知道如何使其始终保持最新状态,这很棒。

我喜欢这种方法而不是差异比较工具(例如 VS DB 项目集成),因为它是可测试的,并且可以更好地控制任何升级所采取的确切步骤。Diff 工具会执行各种有问题的操作,例如复制表和重命名,这对于测量 +1TB 的部署(我的应用程序必须处理)不起作用。

如果您期望的数据大小相当小(<100 Gb),我会考虑基于差异的工具。基于vsdbcmd的 VS DB 项目部署在这种情况下可以正常工作。此外,如果您的部署目标只有一个位置(即只有一个目标的 Web 应用程序,即网站 db),那么升级任何先前版本的能力就会失去吸引力。

于 2010-06-15T17:33:05.333 回答
0

试试 DBSourceTools。http://dbsourcetools.codeplex.com
它是开源的,专门用来帮助开发者控制数据库的版本。

于 2010-07-21T01:50:00.767 回答