演练:在独立开发环境中执行迭代数据库开发

演练:创建独立数据库开发环境中,您作为数据库管理员创建了一个数据库项目,并从成品服务器中导入了架构和数据库对象定义。 在第二个演练中,您创建了数据库单元测试以验证现有功能并确立明确的基线。

作为本系列的第三个也是最后一个演练,您将执行一项典型的迭代开发任务:重命名两个数据库列。 为了使您的更改给团队其他人员带来的风险降至最低,您将在独立开发环境中进行这些更改,直至您做好了共享更改的一切准备。

本演练演示以下任务:

  1. 如何使用数据库重构重命名列,从而减少更新对列的所有引用所需的时间,以及降低出错几率。

  2. 运行数据库单元测试以验证更改未破坏现有功能。

  3. 将更改签入版本控制以使其可供其他团队成员使用。

系统必备

必须已安装 Visual Studio 高级专业版 或 Visual Studio 旗舰版 并且具有对 SQL Server 2008 的 AdventureWorks2008 示例数据库的访问权限。 此外,本演练假定您已经完成了演练:创建独立数据库开发环境演练:为独立开发环境建立基线

重命名数据库列

通常,一个开发任务会涉及对数据库对象进行重命名。 本演练中,您需要将 [HumanResources].[Employee] 表中的 BusinessEntityID 列重命名为 BusinessEntityNumber。 在多个外键和存储过程中引用了 BusinessEntityID 列。 若要进行手动更改,将不得不修改多个文件。

进行修改之前,您应该确保拥有该数据库项目的最新版本。

获取数据库项目的最新版本

  1. 在**“团队资源管理器”**中,展开包含该数据库项目的“团队项目”节点。

  2. 双击“源代码管理”节点以打开**“源代码管理资源管理器”**。

  3. 在**“源代码管理资源管理器”中,右击您的数据库项目,再单击“获取最新版本”**。

    包含该数据库项目的解决方案的最新版本随即被检索到您的计算机中。

将 BusinessEntityID 重命名为 BusinessEntityNumber

  1. 如果 AdvWorksSandbox 解决方案已在**“解决方案资源管理器”**中打开,则转至步骤 4。

  2. 在**“文件”菜单上,指向“打开”,然后单击“项目/解决方案”**。

    将出现**“打开项目”**对话框。

  3. 单击 AdvWorksSandbox 解决方案,然后单击**“打开”**。 (默认情况下,此解决方案位于“我的文档\Visual Studio 2005\Projects\AdvWorksSandbox”中。)

    AdvWorksSandbox 解决方案将在**“解决方案资源管理器”**中打开。

  4. 打开**“视图”菜单,然后单击“架构视图”**。

  5. 在**“架构视图”**中,展开 AdvWorksSandbox 节点,展开 HumanResources 架构,然后展开“表”文件夹。

  6. 在“表”文件夹中,展开 Employee 表,然后展开“列”文件夹。

  7. 右击“BusinessEntityID”文件夹,指向**“重构”,然后单击“重命名”**。

    **“重命名”**对话框随即出现,并显示现有列名。

  8. 在**“新名称”**中键入“BusinessEntityNumber”。

  9. 选中**“更新包含警告或错误的架构对象中的引用”**复选框。

  10. 如果**“预览更改”复选框未选中,则将其选中并单击“确定”**。

    **“预览更改 - 重命名”**对话框随即出现,并显示此项目中引用您正在重命名的列的所有项。

  11. 单击其中一个更改。

    该更改的详细信息将显示在**“预览更改”**中。

  12. 检查更改之后,单击**“应用”**以应用更改。

    所有经过修改的文件都将从版本控制中签出。

您可在**“挂起的更改”窗口中查看挂起的更改。 下列文件应出现在“挂起的更改”**窗口中:

  • Employee.table.sql

  • ufnGetContactInformation.function.sql

  • uspGetEmployeeManagers.proc.sql

  • uspGetManagerEmployees.proc.sql

  • uspUpdateEmployeeHireInfo.proc.sql

  • uspUpdateEmployeeLogin.proc.sql

  • uspUpdateEmployeePersonalInfo.proc.sql

  • FK_EmployeeDepartmentHistory_Employee_BusinessEntityID.fkey.sql

  • FK_EmployeePayHistory_Employee_BusinessEntityID.fkey.sql

  • FK_Employee_Person_BusinessEntityID.fkey.sql

  • FK_JobCandidate_Employee_BusinessEntityID.fkey.sql

  • PK_Employee_BusinessEntityID.pkey.sql

  • vEmployee.view.sql

  • vEmployeeDepartment.view.sql

  • FK_Document_Employee_Owner.fkey.sql

  • FK_PurchaseOrderHeader_EmployeeID.fkey.sql

  • FK_SalesPerson_Employee_BusinessEntityID.fkey.sql

  • vSalesPerson.view.sql

  • vSalesPersonSalesByFiscalYears.view.sql

  • AWGenPlan.dgen

运行数据库单元测试

在进行任何更改之后并在将应用程序签入版本控制之前,应运行数据库单元测试以确保应用程序仍能正确运行,然后再与团队共享这些更改。

运行数据库单元测试以找出任何潜在问题

  1. 在**“测试”菜单上,指向“窗口”,然后单击“测试视图”**。

    **“测试视图”**窗口将列出若干测试。 默认情况下,已创建了名为 ManualTest1 和 TestMethod1 的测试。 名为 dbo_ufpLeadingZeroTest 的测试是在前一个演练中创建的。

  2. 选择 dbo_ufpLeadingZeroTest,右击它,然后单击**“运行选定内容”**.

  3. 在**“测试结果”**窗口中查看结果。

    至此,已在独立开发环境中部署数据库项目,测试数据已生成,已运行测试并通过。

将数据库项目与成品数据库进行比较

您可以将更新后的数据库项目的架构与成品数据库进行比较,以确定它们之间的差异。 因为只是比较两个架构,而不是更新其中的某个架构,所以可指定其中任一个为源或目标进行比较。

将数据库项目架构与成品数据库进行比较

  1. 在**“数据”菜单上,指向“架构比较”,然后单击“新建架构比较”**。

    将出现**“新建架构比较”**对话框。

  2. 接受“源架构”的默认值。

    已经指定数据库项目 AdvWorksSandbox。

  3. 在“目标架构”中的 Database 列表中,单击指向最初从中导入数据库架构的 AdventureWorks 数据库的连接,然后单击**“确定”**。

    将对两个架构进行比较。 唯一的差别应为您在本演练中所做的更改。

  4. 查看两个架构之间的差别。 完成后,关闭**“架构比较”**窗口。

    现在即可与团队共享您的更改。

签入更改

在确认所有的更改均可与其他团队成员共享之后,将其签入到版本控制中。 您将签入对解决方案的任何更改,这通常包括数据库项目、单元测试项目以及任何关联的应用程序代码和应用程序单元测试。

签入更改并使其可供团队使用

  1. 在**“视图”菜单上,指向“其他窗口”,然后单击“挂起的更改”**。

    将出现**“挂起的更改”**窗口。

  2. 在**“注释”**中,键入“重命名的 BusinessEntityID 列”。

  3. 在**“挂起的更改”窗口中,单击工具栏上的“签入”**。

    在将数据库项目及其包含的文件签入版本控制中的过程中,将显示**“签入进度”**对话框。 **“解决方案资源管理器”**中的图标将更新,以表明文件已签入到版本控制中。

后续步骤

对于您的团队部署到生产环境中的每个数据库版本,这种迭代过程将发生多次。 每个开发人员都各自独立进行更改,测试更改以确保它们正确,然后将更新内容签入版本控制中以便与团队共享更改。 有关如何生成和部署数据库的更多信息,请参见生成数据库并将其部署到独立开发环境中生成数据库并将其部署到临时或生产环境中

提示

如果部署到您最初从中导入 AdventureWorks2008 的相同服务器,则可能会出现错误。 如果出现的错误指明您无法创建一个已存在的文件,则表示您可能在第一个演练中缺失了一步。 有关更多信息,请参见将项目部署到独立开发环境

若要了解有关 Visual Studio 的数据库功能的更多信息,可运行针对每个功能领域的更为深入的演练。

请参见

概念

重构数据库代码和数据

运行数据库单元测试

使用单元测试验证数据库代码

比较和同步数据库架构