我有一个正在运行的 Web 应用。我需要对数据库进行重大修改,现在我需要替换当前的数据库。
我的开发 SQL 实例不是实时实例。我通常只是备份新数据库,删除旧数据库,然后恢复更新的数据库。但现在我有需要保留的数据。
大多数当前表已发生改变,因为添加了额外的列,所有现有列仍然存在且保持不变。
我可以访问管理工作室。
正确的做法是什么?
答案1
执行此操作的“正确方法”是将开发过程中对数据库的任何更改视为临时更改,并编译数据库构建脚本列表,以便您可以在生产数据库上重建新架构。您所做的任何更改都应存储在与数据库版本(1.0、1.1、1.2...)绑定的 SQL 升级脚本中,或者最好将其放入源代码存储库中,以便与软件代码一起进行版本控制。当您想要更新生产数据库时,您将运行一系列更新脚本以将数据库升级到最新版本。
有时,您可以在 Management Studio 中处理开发数据库后生成更改脚本,方法是右键单击表或存储过程并选择“脚本到”。这将生成可用于构建更新脚本的 alter 或 create 语句。完成所有更新脚本后,将生产数据库复制到开发箱并测试升级以确保一切正常。然后,当您准备好更新实时系统时,创建备份,然后在生产服务器上运行脚本。
另一种方法是生成具有正确架构的空白数据库,然后将所有数据复制到空白数据库中。对于复杂的架构,这通常很难做到,并且该过程可能需要大量停机时间,而使用更新脚本通常可以在最短的停机时间内完成。
有关详细信息,请参阅此问题管理数据库版本和升级。