9

我是一个持续交付迷,我对自动化构建、测试和部署过程充满热情。我真正需要帮助的一件事是在自动化部署中部署数据库迁移脚本时的最佳实践是什么。这些是我的技术堆栈的相关细节。

  • ASP.NET MVC 3 网站
  • Visual Studio 2010 数据库项目
  • SQL Server 2008 R2 数据库
  • 视窗服务器 2008 R2
  • 通过 Web Deploy 2.0 (MS Deploy) 进行远程部署

目前,我能够使用 Web Deploy 2.0 工具部署我们的 ASP.NET MVC 网站(哇,设置起来很有趣!)。MSDeploy 有一个“dbFullSql”提供程序,但这只能用于部署整个数据库,而不是迁移。MSDeploy 为扩展“runCommand”提供程序敞开大门,以便在远程服务器上执行任意进程。我想我可以利用它以这种方式执行我的迁移脚本。但是,我觉得应该有更好的方法来做到这一点。

回答时请记住,我想将 MSDeploy 用于与远程部署目标的所有交互。尽管如果您知道一种可用于将迁移安全地推送到不是 MSDeploy 的远程目标的工具,我也会有兴趣了解它!

编辑:回答者(谁删除了他们的答案!)参考了以下文章:http ://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/deploying-database-项目

这是一个很棒的资源,我不知道。我以一种或另一种形式阅读过大部分内容,不幸的是,这篇特定的文章再次证实了我自己的怀疑。从本质上讲,没有简单的方法可以使用当前工具推送自定义增量更新(vaporware 承诺在典型 MS 风格的未来版本中提供更好的功能)。

在它提到的文章主题的注释中。

... 使用 VSDBCMD 是增量数据库发布的推荐方法。

然而,VSDBCMD 只能在源和目标之间生成增量脚本,我根本不相信迁移,尤其是在生产部署中。本文提到的通过 Web Deploy 推送增量更新的唯一解决方案是创建包含自定义 SQL 迁移脚本的自定义 WPP 目标文件。

您可以将 Web 部署配置为运行数据库项目生成的 SQL 部署脚本,但为此,您需要为您的 Web 应用程序项目创建一个自定义 WPP 目标文件。这大大增加了部署过程的复杂性。此外,Web Deploy 不直接支持对现有数据库的增量更新。有关此方法的更多信息,请参阅扩展 Web 发布管道以打包数据库项目部署的 SQL 文件

啊!它确实看起来很复杂。我以前读过这个,我希望有更好的方法。目前,我仍然倾向于执行 SQLCMD 的 MSDeploy 'runCommand' 提供程序。

4

1 回答 1

3

您实际上可以将 SQL 脚本指定为 dbFullSql 提供程序 ( -source:dbfullsql="C:\sqlcmd.sql") 的“源”,它只会运行该脚本。我之前使用过它来部署一个自定义的迁移脚本管理工具,该工具会生成。

我确实希望数据库项目对 CD 更友好,因为当需要进行 db 重构时,“自动”的东西往往会很快崩溃。

Web 部署 dbFullSql 提供程序参考

于 2012-07-09T03:25:53.230 回答