gpt4 book ai didi

sql-server - 在不丢失任何数据的情况下更新数据库结构的最佳实践

转载 作者:行者123 更新时间:2023-12-03 09:39:39 26 4
gpt4 key购买 nike

我和一个队友正在为我们公司开发一个基于网络的应用程序。 SQL Server 2005 用于数据持久化。由于应用程序不断发展,而任何最新的稳定更新都将部署到生产环境中。我们公司没有个人 DBA,也没有 SQL Comparator 工具。

为了将生产应用程序中的数据库更新到最新版本,我的方法是将过程分为:

  1. 根据所有创建一个新的数据库创建脚本

  2. 通过复制和/或转换进行数据迁移

  3. 使用新实例进行测试

  4. 替换

我的主要考虑是我们不能保证手动创建的脚本没有错误。然而,我被同事质疑说这种方法很麻烦。

所以,请指教什么会更好?还是最好的?

附注我们没有购买需要许可证的工具的预算。

谢谢!

威廉

最佳答案

首先,数据库代码与所有其他代码一样,应该编写脚本并放在源代码管理中。这样你就知道什么代码需要与你正在推送的应用程序版本一起推送(并且可以很容易地与它捆绑在一起)。毕竟,由于相应的应用程序代码尚未准备好,您可能还没有准备好将更改推送到生产环境。

在任何情况下都不应使用 GUI 更改数据库,只能使用源代码管理中的脚本进行更改。

一旦有了数据,对表的所有更改都应该使用 alter table 来完成。如果你不能对某些东西使用 alter table(比如在事后添加一个身份字段),那么你可以编写一个脚本来创建一个表,该表的名称在你想要的结构中略有不同,从旧表中复制数据,删除旧表并重命名新表。当然,如果表上也有索引、约束、触发器等,您还必须删除并重新创建它们。幸运的是,大多数更改都可以使用 alter table 完成。)如果您需要创建一个不允许为 null 的新字段,那么您可以使用 alter table 使用默认值编写新字段的脚本,或者使用 alter table 添加允许为 null 的字段,写入更新以使用现有数据填充该字段,然后写入另一个更改表以使该字段不为空。

关于sql-server - 在不丢失任何数据的情况下更新数据库结构的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5728716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com