【问题标题】:SQL Server: Upgrading databasesSQL Server:升级数据库
【发布时间】:2008-12-08 12:27:08
【问题描述】:

我们有一个使用 Microsoft SQL Server 数据库的产品。我们有客户使用各种旧版本的产品。

在这种情况下人们如何编写/构建他们的数据库升级脚本?

【问题讨论】:

    标签: sql-server upgrade


    【解决方案1】:

    您需要一组发布到发布的补丁脚本。在具有实时数据的生产系统上,这有点棘手,因为您可能还必须在这些脚本中操作数据。

    Redgate SQL Compare Pro 是生成这些脚本或对脚本执行 QA 功能的非常好的工具(显然你不应该将它同时用于这两个角色)。因为您涉及实时客户数据,所以您必须对升级进行回归测试。

    我认为没有简单的方法可以做到这一点。您必须开发脚本并测试它所做的任何数据操作。为一些有用的升级集进行不同版本的测试。这里的关键是安排一个生产镜像测试环境,您可以在将补丁应用到实时系统之前对其进行测试。

    附:在你最终运行补丁脚本之前,不要忘记在生产数据库上备份和测试恢复,但你已经知道了;-}

    【讨论】:

      【解决方案2】:

      我们有一个 SQL 脚本可以进行全新安装和升级。安装 SQL Express 或完整的 SQL Server 后,我们运行此脚本,该脚本执行以下操作:

      1. 如果表不存在,则使用 CREATE TABLE 创建表。
      2. 删除并重新创建所有存储过程
      3. 对表格进行修改,例如字段更改、字段添加等。

      我们不断扩展这个脚本,所以每个版本只会添加到这个 SQL 脚本文件。这意味着我们可以在生产系统上运行此脚本以将它们更新到最新的架构,使用新安装的脚本从头开始创建架构。

      这样,我们可以保证升级脚本甚至会将最旧的安装升级到最新版本。

      【讨论】:

      • 您如何应对不断更新此脚本?如果您必须查看最初的表创建,然后查看列插入的集合,可能会分布在一堆后续脚本中,这是否会让人难以阅读?
      • 嗯,不,我从不查看原始表的创建。我只是根据我的最新版本进行需要进行的修改。所以我只在每次构建后添加几个改动。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多