【问题标题】:How do you deal with configuration management of Database Tables?您如何处理数据库表的配置管理?
【发布时间】:2010-09-11 10:26:35
【问题描述】:

您如何处理数据库表的源代码控制管理和自动化部署(配置管理)。我在 SQL Server 环境中工作,很容易为存储过程/触发器/函数甚至作业编写删除脚本和创建文件。处理创建新数据库表的脚本也很容易。但是,如果稍后您想修改该表,则不一定要删除它并使用新字段重新创建它,以免丢失数据。有没有一种自动化的方法来处理这个问题?您是否在更新新更改的表后编写临时表并回填? (如果数据很多,可能会比较粗略)

任何建议将不胜感激。

【问题讨论】:

    标签: sql sql-server database tsql


    【解决方案1】:

    我们在使用 Oracle DB 时也有过类似的经历。我们建立了采用 SVN 和自动化脚本(从 SVN 中提取更改)以构建补丁的程序。 请参阅http://www.scmsupport.com/scm.php?go=home.htmlhttp://scmsupport.wordpress.com/ 了解更多详情。

    【讨论】:

      【解决方案2】:

      哦,忘了说,在将架构更改加载到生产环境之前,请确保您有一组良好的数据库备份。安全总比后悔好。

      【讨论】:

        【解决方案3】:

        Red-gate 的 SQL 比较等工具在确保您拥有完整的脚本方面非常宝贵。您仍然可能需要手动调整它以确保对象以正确的顺序编写脚本。确保编写触发器和约束等脚本以及表。通常,您将希望使用 alter 命令而不是 drop 和 create,尤其是在表很大的情况下。

        我们所有的表和函数以及存储的过程也需要在源代码控制下,所以如果需要我们可以返回旧版本。此外,我们的 dbas 会定期删除他们在 Source COntrol 中找不到的任何内容,以防止开发人员忘记这样做。

        当然,所有升级到生产环境的开发脚本都应该首先在 QA 或登台服务器上运行,以确保脚本在 prod 上运行之前能够正常运行(并且无需更改)。此外,还需要考虑在 prod 上运行的时间,您不想锁定用户,尤其是在繁忙时段,而且时间表明,在周五下午晚些时候将脚本加载到生产环境通常是个坏主意。

        【讨论】:

          【解决方案4】:

          您可以自动创建初始创建脚本,但 ALTER 脚本确实需要根据具体情况手动编码,因为实际上您需要在其中进行自定义操作。

          在任何情况下,您都需要某种方法来为每次更改创建应用和回滚脚本,并拥有一个运行它们的安装程序脚本(当然还有一个回滚来回滚它们)。这样的安装程序可能应该记住架构所在的版本,并以正确的顺序运行所有必要的迁移。

          在这里查看我的文章:

          http://marksverbiage.blogspot.com/2008/07/versioning-your-schema.html

          【讨论】:

            【解决方案5】:

            有一些工具可帮助您开发架构、开发更改、版本化这些更改,并帮助您比较版本之间的差异,甚至生成 SQL 以进行 DDL 更改。

            例如,查看 Embarcadero Change Manager 和 Embarcardero 提供的其他产品。

            【讨论】:

              【解决方案6】:

              它会有所不同,具体取决于您希望如何处理现有数据以及架构更改的范围有多大,但即使在 Management Studio 中,在提交更改之前,您也可以生成所有更改的脚本。

              对于大量数据或存在约束或外键的情况,即使是简单的 ALTER 操作也可能需要大量时间。

              【讨论】:

                猜你喜欢
                • 2014-10-06
                • 2010-09-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-06-26
                • 2010-09-14
                • 1970-01-01
                相关资源
                最近更新 更多