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