【问题标题】:Is rollback possible in Database-project?数据库项目中是否可以回滚?
【发布时间】:2015-08-10 05:52:32
【问题描述】:

我在 Visual Studio 2013 中从现有数据库创建了数据库项目。然后我在数据库项目中做了很多修改,比如修改存储过程、部署后脚本、表结构等。现在数据库项目已准备好部署。但是我担心如果任何脚本失败,那么我如何在正确构建的情况下保留原始状态。

请建议,如果任何查询失败,那么我想要回滚我在数据库项目中所做的所有更改。

【问题讨论】:

    标签: visual-studio-2013 sql-server-data-tools database-project


    【解决方案1】:

    首先,您需要信任您的工具,并且相信它们会起作用或寻找其他工具。

    在您建立信任时,我会在部署前脚本中添加创建备份或在部署之前运行备份,然后如果出现任何问题,您可以恢复并找出问题所在。

    正如大卫所说的回滚,你会得到以前部署的 dacpac 并从中生成一个新的部署脚本但是向前修复几乎总是正确的做法,而不是回滚到以前的版本。

    编辑

    【讨论】:

      【解决方案2】:

      您是否已将更改检查到版本控制中?如果是这样,您需要做的就是恢复到上一个​​已知的良好版本。

      或者...简单地找出它现在失败的原因并解决根本原因?

      【讨论】:

      • 不幸的是,这并不完全正确。如果您的架构更改包括删除数据(例如删除一列),则此答案将无法解决此问题,并且在恢复到以前的版本后数据会丢失。在这种情况下必须包含备份策略,所以我认为 Ed Elliot 的回答更合适。
      【解决方案3】:

      我前段时间使用了 Db 项目,据我所知,部署脚本被包装在事务中。可以在不执行的情况下生成 sql 脚本。该设置位于数据库项目设置中的某个位置。您可以查看该脚本并确保它会在出错时回滚。

      建议进行备份,尤其是在部署到生产环境时。

      【讨论】:

      • 有一个选项可以将其包装在事务中。如果您禁用它,则没有交易。它也不适用于部署后脚本。一般来说,如果尝试通过项目更改架构时出现错误并且您启用了事务选项,它将在错误时回滚更改。
      • 在部署 .dacpac 文件时,回滚选项可用。但发布的时间不会。是默认回滚吗?还有一个在 DML 命令的情况下如何回滚。
      • 发布命令使用您告诉它执行的任何操作。如果您告诉它将更改包装在事务中,它会这样做。这是选项之一。不过,数据脚本的回滚需要单独处理。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 2020-07-05
      • 1970-01-01
      相关资源
      最近更新 更多