将升级(与应用程序相关)应用于数据库

时间:2009-07-22 15:46:05

标签: sql-server sql-server-2005 installer sql-server-administration

由于我之前没有这样做,所以我不确定我计划这样做的方式是否合适或是否有更好的方法。与使用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 Scripts)的安装文件。检查存储版本信息的数据库中的表,并根据它运行不同的脚本来升级数据库。

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

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

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

感谢, _UB

4 个答案:

答案 0 :(得分:3)

我们一直在使用DBGhost一年左右,以便将我们的数据库与我们的代码库一起保持在源代码控制之下,这使得这种事情变得简单易行。它不仅仅是经过深思熟虑,而是多年来一直用它来推出自己的代码,所以它已经过时了。

答案 1 :(得分:1)

您是否坚持自己做,或者您是否认为自己承诺投资工具?

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

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

否则,我猜它会变得非常棘手和凌乱......

马克

答案 2 :(得分:1)

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

  问:我们的问题是管理问题   数据结构变化期间   升级。我们的产品线是   收缩包装,或从中下载   网站。所以当用户下载时   升级,他们可以升级   一个非常新的版本,很少   数据库结构的变化,或者   升级可能来自一个非常旧的版本   具有多种结构   变化。一次升级需要管理   这一切。用户将在异地,所以   我们握不住他们的手。我们有   用户在希腊,澳大利亚,马来西亚,   挪威等等DB Ghost如果在   all,处理远程更新   地点?

     

答:DB Ghost Packager Plus产品是   设计专门解决这个问题   因为它可以动态处理问题   对目标数据库的必需更新   无缝连接。

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

谢谢, 埃里克

答案 3 :(得分:1)

在Rails世界中,他们正在使用名为Migrations的工具/方法。

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

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

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

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