【问题标题】:Visual Studio Database Project Rollback ScriptVisual Studio 数据库项目回滚脚本
【发布时间】:2011-07-06 02:56:53
【问题描述】:

我正在使用 Visual Studio 2010 中的数据库项目来生成一个脚本来部署我的数据库(以及它的更改)。这很好用。

有没有办法让 Visual Studio 数据库项目生成回滚脚本以及部署脚本。

我不想在部署时回滚事务;但是假设我部署了它,并且我的存储过程有一个被忽视的性能问题,该问题在一周后出现,需要回滚到以前版本的数据库。

有没有办法在构建/部署时生成回滚脚本,这将撤消部署脚本所做的任何更改。

编辑:如果我们忽略我正在使用数据库项目:为生成的数据库生成升级和降级路径的好方法是什么?
这一代需要成为自动化构建过程的一部分。

【问题讨论】:

  • FluentMigrator 支持这个概念(听起来比 VS 好多了)。

标签: visual-studio-2010 rollback database-project


【解决方案1】:

创建回滚脚本 在使用 VS2010 进行架构比较时,就像交换源和目标中指定的数据库名称一样简单。

这样 VS2010 将创建一个回滚脚本,其中包含针对您存储的过程的删除语句。

【讨论】:

  • 我没有研究这么多,所以很明显:这可以在自动化过程中完成吗?
【解决方案2】:

我没有见过这样的事情。

我认为您需要重新考虑这种方法,因为您仍然需要修复数据库项目中的存储过程,否则您下次部署时只会重新部署“坏”版本。 (我相信您已经意识到这一点,但有时指出显而易见的事情并无济于事!)

如果您同时需要将旧版本的 sproc 恢复到服务器,我认为最简单的做法是从源代码管理中获取以前的版本并手动部署它。

【讨论】:

  • 存储过程只是一个例子。出于任何原因,它可能需要回滚。在某些情况下,可以部署“热修复”,但其他情况可能无法正常工作。 (我不是数据库专家,所以我的例子缺乏复杂性)
  • 好的,没关系,但我不确定回滚脚本是否总是有效,或者在没有人工干预的情况下是否易于生成。例如,在以前的项目中,我们需要在预部署阶段将数据迁移到新的数据库结构。这使我们在部署新的数据库结构时不会丢失数据。为了回滚这些类型的更改,您必须手动编写脚本来逆转迁移。
  • 但是,如果你真的想继续做这种事情,你也许可以使用模式比较工具来生成 reverse 中的差异脚本部署前的方向。 (即从项目到数据库)。然后,如果您需要撤消任何更改,则可以将其用作基线脚本。
【解决方案3】:

您可以在发布之前创建数据库的备份,然后在出现问题时从备份中恢复。显然,自备份以来,您还会丢失任何数据更改(作为发布的一部分或随后进行的)。

我的另一个想法是在发布之前创建一个快照。创建快照的操作非常轻量级。我不确定您是否希望将快照保留一周,但如果发布出现问题,那么我认为从快照恢复比从完整备份恢复更快。我很想听听人们对这个想法的任何 cmet。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多