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