1

由于我之前没有这样做过,所以我不确定我打算这样做的方式是否可行或者是否有更好的方法。就像使用 Windows Installer 或 Install Shield 或 Windows Installer XML (WiX) 工具集一样。任何帮助都会很棒,因为我不知道。

我们有一个产品,我们每隔几个月就会发布新版本。到目前为止,我们只推出了完整的版本,即版本 1.0 或版本 1.5,但没有从 1.0 升级到 1.2 到 1.3 到 .... 你明白了,对!因此,任何获得 1.0 版本的客户都无法升级到 1.2 或 1.3 甚至最新版本。他们必须卸载旧版本并安装最新版本。这是不对的,但这就是我们迄今为止所能做的。但我们想改变它。

我的计划是为每个升级路径创建一个带有(Sql 脚本)的安装文件。检查数据库中存储版本信息的表,并根据它运行不同的脚本来升级数据库。

我担心的是,一旦我们有超过 5 或 6 个不同的版本,这种方法可能无法扩展。

如果您可以指出有关此主题的任何文章或书籍,那也会有很大帮助。

另外,我们可以为此使用 Windows Installer 或 Install Shield 吗?

谢谢,_UB

4

4 回答 4

3

We've been using DBGhost for a year or so now to keep our database under source control along with our codebase, and it makes this kind of thing dead easy. It's not just well thought through, but they've been using it to roll out their own code for years, so it's dead solid.

于 2009-12-09T22:09:18.370 回答
1

您是否坚持自己做,或者您是否可以看到自己承诺并投资于工具?

我真的很喜欢 Red-Gate 的SQL Packager的想法,它将“区分”您的两个数据库版本,然后创建一个 SQL 脚本、一个 C# 项目或一个独立的可执行文件以从版本 1 升级到版本 2。

不是 100% 能够从 1.0、1.1、1.2、1.3 全部升级到 2.0 - 查看他们的网站,看看他们是否为这种情况提供了一些东西!

否则,我想它会变得相当棘手和混乱......

马克

于 2009-07-22T17:03:36.040 回答
1

你的问题很常见,我在上一份工作中不得不处理这种问题。除了 RedGate 工具之外,还有另一个工具可以帮助您完成需要做的事情。这是一个名为 DB Ghost 的工具。他们明确地解决了版本控制问题,并且还有一个打包程序。我建议试用 DB Ghost 产品,因为他们有一些关于多版本升级的有趣声明。这取自他们的常见问题解答(http://www.innovartis.co.uk/faqs/faqs.aspx):

问:我们的问题将是管理升级期间的数据结构更改。我们的产品线是收缩包装的,或可从网站下载。因此,当用户下载升级时,他们可能是从最近的版本升级,几乎没有数据库结构更改,或者升级可能是从一个非常旧的版本进行大量结构更改。一次升级需要管理这一切。用户将不在现场,因此我们无法握住他们的手。我们在希腊、澳大利亚、马来西亚、挪威等地都有用户。如果 DB Ghost 有的话,将如何处理远程位置的更新?

答:DB Ghost Packager Plus 产品旨在专门解决这个问题,因为它可以无缝地动态处理对目标数据库的所需更新。

我之所以提到这一点,是因为我们公司正在尝试做类似的事情,而我正在研究这个工具。

谢谢,埃里克

于 2009-08-12T22:32:23.440 回答
1

在 Rails 世界中,他们使用一种称为迁移的工具/方法。

基本上归结为创建一个小的 sql 脚本来升级和降级对数据库的每个小改动。

当您测试应用程序时,您将数据库迁移到您想要的版本,并且在部署时,应用程序可以检查它需要的版本并迁移到该版本。

大多数流行语言都有免费的迁移工具包,但它们可能是某些 MVC 框架的一部分。

迁移的一个很好的副作用是您拥有可以轻松存储在源代码控制存储库中的数据库源代码。

于 2009-08-13T05:00:53.933 回答