65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 GUI 和自动化工具管理 SQL Server 数据库结构迁移

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2004年1月5日

4分钟阅读

viewsIcon

64951

管理表、存储过程和视图等数据库对象的设计和创建,是数据库开发人员的日常工作。

这是我们CodeProject赞助商的展示评论。这些评论旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。

引言

管理表、存储过程和视图等数据库对象的设计和创建,是数据库开发人员的日常工作。由于应用程序不断发展和变化,数据库结构(或模式)的添加和更改是开发过程中的持续组成部分。

开发人员通常使用图形用户界面(GUI)工具来创建必需的数据库对象,例如 Microsoft 的 SQL Enterprise Manager for MS SQL Server。基于 GUI 的工具提供了一种强大、快速的方式来创建数据库对象,因为它们可以自动化工作细节,让开发人员能够专注于提高性能。然而,它们也会隐藏用于创建新对象的 SQL 命令,这在开发人员需要在不同数据库之间迁移结构时可能会导致问题。

开发阶段之间的数据库结构迁移

许多组织在其开发过程的不同阶段使用一系列数据库。他们可能有一个开发数据库、一个测试数据库、一个暂存数据库和一个活动的生产数据库。一旦应用程序的一个迭代完成并进入下一阶段,就需要迁移相应的数据库结构(例如,从暂存数据库迁移到活动数据库)。如果组织使用 SQL Server 作为其数据库,通常会采用以下三种流程之一。

图 1:一种用于管理数据库更改的典型手动脚本汇总过程。一组开发人员对开发数据库进行更改。然后汇总这些更改,并手动生成脚本以同步数据库。随后是一个漫长的调试过程。

  1. 手动迁移数据库,将 SQL 语句手动编码到 SQL 迁移脚本中(如图 1 所示),或为每个单独的更改使用 SQL Enterprise Manager,将更改从旧数据库迁移到新数据库。SQL 更改脚本或更改列表通常由所有开发人员协作生成,使用 SourceSafe 中的通用文件,DBA 拥有检查和进行更改的最终责任。

    这种方法的主要问题在于它不是一个文档化、可重复的过程。一名开发人员的一个小错误就可能导致混乱。通过使用 Red Gate 的 SQL Compare 来验证迁移尝试后两个数据库是否确实共享相同的结构,可以减轻这个缺点。

    图 2:使用 SQL Compare 比较和同步 SQL 数据库的低开销过程。开发人员进行更改,然后在没有任何手动脚本生成的情况下比较和同步开发数据库和活动数据库。

     

  2. 使用 SQL Compare 创建脚本,将一个数据库的结构转换为匹配另一个数据库(见图 2)。这涉及使用 SQL Compare 可视化两个数据库之间的差异,并自动创建 SQL 脚本来进行更改。这通常由 DBA 完成,但开发人员通常也有自己的副本,以确保一切正常。

    这是一个很棒的、成本非常低、开销很小的解决方案,但如果想要严格控制过程管理,它可能会产生影响。谁来记录刚刚所做的更改?如果 DBA 的机器坏了怎么办?

     

  3. 使用 SQL 比较和同步工具包 (SQL Toolkit),以自动化管理 SQL 数据库的更改。这涉及以编程方式使用提供 SQL Compare 功能的 API,以创建紧凑的自动化过程。一旦自动化完成,就可以每天运行更改,并将记录保存在 SourceSafe(或其他类似工具)中(见图 3)。

解决方案 1 和 2 都很常见,但第三种解决方案值得更详细地研究。

图 3:自动迁移数据库的解决方案。编写一个 SQL Toolkit 应用程序,其中包含 SQL Compare API,以设置您选择的比较和同步时间,并将快照和脚本保存在 SourceSafe(或类似工具)中供将来使用。

使用 SQL Toolkit 的项目通常具有以下设计目标:

  • 与 SourceSafe 集成。
  • 所有数据库迁移使用通用脚本。
  • 计划在特定时间运行或与构建过程集成。

与 SourceSafe 集成通常通过 SQL Compare 的快照文件完成,该文件提供了给定时间数据库模式的完整描述,同时还允许您将未来任何数据库与该日期的数据库进行比较。生成的脚本也会自动存储在 SourceSafe 中并独立测试。

使用一个命令行工具进行调度设置,SQL Compare 中有一个很好的例子。然后可以定期运行比较——尤其是在使用备份服务器来保护开发工作时,或者在记录大量更改时。

这只是对 SQL Compare 和 SQL Toolkit 功能的非常简短的概述。请访问 Red Gate 的网站,获取 更多信息评论客户评价案例研究,以及一个 功能齐全的免费试用版

© . All rights reserved.