创建 SQL Server 回滚脚本的最佳方法?
-
03-07-2019 - |
题
我正在对现有数据库进行一些架构更改。
我备份了数据库以获得开发副本,并进行了更改。我将创建一个滚动脚本来在单个事务中迁移生产计算机上的更改。
是否有创建回滚脚本以防止出现部署问题的最佳实践?在我使用以下模式手写之前:
- 删除新的约束和索引
- 更改表以删除新列
- 删除添加的表
- 提交交易
有更好的方法吗?
解决方案
基本上就是这样,除了你的方法之外,我认为没有什么可补充的。这就是我们在公司中的做法,我们开发人员负责创建脚本和回滚脚本,并且我们负责使数据库保持应用初始更改之前的相同状态。然后 DBA 在生产中运行它,如果出现问题,他们将运行回滚脚本,一切都会恢复正常。只需记住依赖关系和更改对象的顺序,然后向后创建回滚脚本即可。
其他提示
如果它是一个相对较小的数据库,只需在应用升级之前进行备份。如果一切都失控了,你就进行恢复。
一旦它上线并输入新数据,您无论如何都无法真正将其回滚。你只需要解决问题。
如果您使用 Redgate 的 SQL Compare 等工具,则可以以两种方式运行两个数据库之间的比较,并使用这两种方式创建您需要的脚本。dev 到 prod 脚本将包含您所做的更改,prd 到 dev 脚本将返回到原始生产数据库状态。这可以确保您也不会忘记两个脚本中的任何内容。
使用 SQL Server 2005 或更高版本,您还可以创建数据库快照,以便您随时返回到该状态。请参阅此页面了解更多信息:
不隶属于 StackOverflow