SSDT创建回滚部署脚本?

SAS*_*SAS 3 sql-server tfs sql-server-data-tools

我们可以用TFS和SSDT创建一个SQLServer部署脚本,但有没有办法创建回滚脚本,以便我们可以回滚部署?谢谢

Pet*_*ott 7

由于SSDT(和类似产品)都通过将项目中的模式与实时数据库进行比较来使数据库与模型同步,因此没有直接的方法来创建回滚脚本.还有关于通过部署前或部署后脚本更改/添加/删除的数据的注意事项.

话虽如此,有一些选择.

  1. 每次发布时都拍摄快照.您可以使用先前版本中的快照进行另一次比较以进行回滚.
  2. 在其他地方维护先前版本 - 可能会从您的生产系统与本地计算机进行架构比较.您可以使用它来比较生产并进行回滚.
  3. 在发布之前生成现有系统的dacpac(使用SQLPackage或SSDT来执行此操作).如果出现问题,您可以使用它将该版本的架构部署回数据库.
  4. 在发布之前获取数据库快照.最佳情况,您不需要它并可以删除快照.最坏的情况是,您可以使用它来回滚.当然,您需要注意空间和IO,因为您将在其他地方保持原始状态.
  5. 通过多个环境运行更改,以最大限度地减少回滚的需要.理想情况下,如果您通过开发,QA和暂存/用户接受环境运行此代码,那么您的代码和发行版应该足够强大,以便能够在没有任何问题的情况下发布.

您需要相应地编码以回滚数据更改.由于每个场景都不同,这可能会有点棘手.您需要确保编写的脚本可以撤消发布中的任何更改.如果您插入了一行,则需要一个回滚脚本来删除它.如果您更新了大量数据,则需要备份该数据或以其他方式将其恢复.