为客户生成SQL升级脚本

为客户生成SQL升级脚本,sql,database,Sql,Database,在产品版本之间维护升级脚本的最佳方法是什么?如果客户从产品的版本3开始到版本5,那么为客户生成升级脚本的最佳方法是什么,以便解决版本3和版本5之间数据库架构的任何差异?1)使用以下工具: 2) 使用 3) 写你自己的 我认为这完全取决于您的数据库结构和新版本的新功能。如果新版本与旧版本有很大不同,您可能希望有一个过程来进行升级,而不仅仅是SQL脚本版本控制可以通过以下类似于dbdeploy或ruby rake迁移的方法来处理。您可以按顺序为每个更新脚本编号,并且在数据库中有一个表,该表存储已实现

在产品版本之间维护升级脚本的最佳方法是什么?如果客户从产品的版本3开始到版本5,那么为客户生成升级脚本的最佳方法是什么,以便解决版本3和版本5之间数据库架构的任何差异?

1)使用以下工具:

2) 使用


3) 写你自己的

我认为这完全取决于您的数据库结构和新版本的新功能。如果新版本与旧版本有很大不同,您可能希望有一个过程来进行升级,而不仅仅是SQL脚本

版本控制可以通过以下类似于dbdeploy或ruby rake迁移的方法来处理。您可以按顺序为每个更新脚本编号,并且在数据库中有一个表,该表存储已实现的所有脚本编号

升级工具只应用数字高于数据库上已实现的脚本


阅读更多

这一点以前已经讨论过很多次了:

似乎是解决这些问题的首选方法。我确实喜欢这种方法,但如果您的案例很简单,您可能更喜欢将SQL存储在一个具有版本号的表中,如下所示:

create table upgradetable (major int, minor int, revision int, change text)
然后,您可以获得一个脚本来执行升级,方法很简单:

 select change from upgradetable where major > (select major from versiontable)
(当然,要适应口味)

如果您不能通过SQL完成所有升级,那么这将不起作用,在这种情况下,我建议您使用migrator.net,试试它是否适合。它有一个用于编写迁移的特殊DSL,它可以自动生成降级脚本并跟踪版本,因此您不必编写任何代码来完成这项工作


如果您想以编程方式进行升级,请参阅。

实际上,这很容易。
与标准代码存储库上的分支类似,您需要的是一种源代码控制策略,它允许您执行以下操作:
A.在特定点创建数据库结构的分支。(v3/v4)。
B使用该分支将数据库还原到特定版本。(即v3或v4)。
C创建一组修补程序脚本以从v3迁移到v4,或从v3迁移到v5。
D在发送给客户之前测试这些补丁。

这样,您就能够支持数据库的多个版本,并提供经过测试的升级路径。

看看DBSourceTools(),特别是补丁策略。
此工具将允许您在特定点对数据库进行基线设置,并创建命名版本(v1)。
然后,创建一个部署目标,并将命名版本增加到v2。
最后,将修补程序脚本添加到修补程序目录,以便对架构或数据进行任何更改。

这为您提供了一个可重复的过程,用于测试从v1到v2应用的所有修补程序。
DBSourceTools还具有帮助您创建这些脚本的功能,即模式比较或脚本数据工具。

完成后,只需将补丁程序目录中的所有文件发送到您的客户端即可。


玩得开心。

过去,SQL Compare对我们帮助很大。我同意,这是比较模式的好方法。