【问题标题】:How do you replicate database layout changes on production server?如何在生产服务器上复制数据库布局更改?
【发布时间】:2009-05-03 02:04:44
【问题描述】:

假设我想向运行 SQL Server 2008 作为数据源的 ASP.NET MVC 应用程序添加一个新功能。为了实现这个新特性,我需要在现有数据库表中添加一些新列。

在我的开发服务器上执行这些更改并实现新功能后,在部署我的新版本应用程序时,在生产服务器上执行相同数据库更改的最简单方法是什么?有什么办法可以自动化吗?

编辑: 正如我刚刚发现的,Visual Studio 2008 的服务器资源管理器似乎能够通过比较两种不同的数据库布局(右键单击数据库,单击“比较架构”)。这通常能满足我的要求吗?还是在使用此功能时有什么大问题?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    我相信使用类似于described by K Scott Allen 方法的手动生成的脚本对数据库进行版本控制非常值得花时间投资。但不是您要求的自动化解决方案。

    【讨论】:

      【解决方案2】:

      如果您的需求相对简单,Red Gate 的SQL Compare 实用程序可能会为您服务。如果没有,像 ER-Win 或 ER-Studio 这样的工具可以处理核心架构和迁移。

      【讨论】:

      • 看起来和我要找的完全一样,但我担心价格标签对我来说有点太高了......
      【解决方案3】:

      您应该有数据库和应用层版本控制。时期。 如果您在生产环境中有 db 1.0 和 app layer 1.0 版本,那么之后对 1.1 和 1.1.5 版本执行的所有更改都应该可以通过脚本“升级”。 所有“alter table”和“alter proc”语句都可以通过脚本运行。

      或者: 将 1.0 db 恢复到 db_old 数据库。从脚本创建生产数据库并复制数据(如果您没有非常复杂的数据库应该不难) applayer 1:0 的自动部署。

      再一次,对于整个过程,您必须在 DEV 中对其进行训练,在 TEST 中进行测试,在 qa 中对其进行验证,然后在最近在 PROD 环境中执行它。

      编辑:我个人认为,如果团队不能同时在 DEV 上顺利从 1.0 版本升级到 1.1 - 闻起来像是糟糕的设计,并且混合了应用层应该在什么上以及在什么上的责任数据库服务器

      【讨论】:

      • 没错,但我在寻求一种方法来自动执行此操作,或者至少让一些工具为我生成这些脚本,因为如果可以避免的话,我不想手动编写它们。
      • sqlcompare 上面已经提出。对于免费软件检查 OpenDiff - codeplex.com/OpenDBiff
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-23
      • 2016-10-18
      • 1970-01-01
      • 2016-08-25
      • 2013-06-05
      • 2018-04-17
      • 1970-01-01
      相关资源
      最近更新 更多