重命名对数据库对象的所有引用

使用数据库重构,可以更快更准确地更新对重命名数据库对象的引用。 如果重命名数据库项目中的数据库对象,则必须同时更新对该对象的所有引用以使这些引用都引用该对象的新名称。 例如,如果重命名表中的一列,则必须更新引用该列的所有存储过程。

通过使用重构,可以更新整个数据库项目中的引用,而不必手动跟踪对象间的依赖关系然后逐个更新引用。 即使是使用 sp_depends 查找依赖关系,也并不总能准确地检索信息,您仍需更新每个引用。

可以使用重构自动重命名以下类型的对象:

  • 表、视图和函数中的列

  • 存储过程参数

还可以使用重构更新数据生成计划、脚本和单元测试。 有关更多信息,请参见重命名数据库对象前的注意事项

默认情况下,重构不会更新其定义导致一个或多个警告或错误的对象。 此外,对于包含已重命名对象的定义的 .sql 文件,重构不会自动更新该文件的文件名。 可在**“解决方案资源管理器”**中手动重命名该文件。

重命名重构的其他用法

还可以使用重命名重构执行以下常规任务:

  • 在不区分大小写的环境中,可以更改对象名及其所有引用的大小写以满足您所在组织的大小写约定。 例如,您的数据库项目可能包含“Myid”和“MyID”的混合引用,您可以使用重命名重构将所有引用更改为“MyID”。

    提示

    已具有正确大小写的引用也将更新(为同一值)。 如果包含这些引用的文件在版本控制之下,则在重构操作过程中会将该文件签出。

  • 可以重命名两个或更多个对象,以使它们的名称和引用相匹配。 例如,可以合并两个架构名称,如“Person”和“Person Name”。 也可以在区分大小写的环境中合并两个仅大小写不同的名称,例如“MyID”和“Myid”。

  • 可以用方括号将架构对象名及其所有引用括起来,以遵循对象命名的最佳做法。 例如,可以用“[MyID]”替换“MyID”的所有引用。

    提示

    已用方括号括起来的引用也将更新(为同一值)。 如果包含这些引用的文件在版本控制之下,则在重构操作过程中会将该文件签出。

当您执行这些任务时,会显示一条错误消息,警告您已存在同名对象。 您必须单击**“是”进行更改。 但是,如果在“重命名”对话框中保持选中“预览更改”**复选框,则可以预览和排除单个更改。

使用重构日志保留意图

重命名数据库对象时,将在重构日志中为您的数据库项目添加一个条目。 部署更改时,此日志有助于确保目标环境中的相应对象按预期重命名。 否则,将丢弃现有对象并添加具有新名称的对象。 该日志在名为 项目名称.refactorlog 的 XML 文件中维护。 在签入组成您的数据库项目的其他文件时,会将此文件签入您的版本控制系统中。 项目名称.refactorlog 文件仅包含关于部署过程中需要特别处理的重构操作的信息。

部署

使用重构时,请仅更新您的数据库项目,而不要更新生产数据库。 遵循此策略可以获得数据库项目的所有益处,其中包括版本控制和团队开发。 生成数据库项目时,所有重构日志文件都合并到您项目的 \sql 文件夹下的 transaction.refactorlog 文件中。 部署您的更改时,合并后的重构日志文件有助于保留对数据库项目的更改的意图。

有关更多信息,请参见生成数据库并将其部署到独立开发环境中

提示

在团队开发环境中,在将所做的更改部署到生产服务器上之前,应当先针对应用程序和数据库运行单元测试。 有关更多信息,请参见开始团队数据库开发

重命名前的注意事项

重命名对数据库对象的引用之前,如果以下任意表述属实,则应考虑其他注意事项:

  • 要重命名视图中的列。

  • 要重命名的对象所在的数据库项目包含一个或多个阻止其成功生成的错误。

  • 存在打开的未保存的数据生成计划。

  • 项目中存在使用数据绑定生成器的数据生成计划。

  • 存在未使用完全限定名称的数据库单元测试,并且这些测试引用其他架构或数据库中的对象。

  • 项目中存在未使用完全限定名称的数据库脚本,并且这些脚本引用其他架构或数据库中的对象。

有关这些情况下的特别注意事项的更多信息,请参见重命名数据库对象前的注意事项

常规任务

下表列出了支持此方案的常规任务的说明,还提供了一些链接,这些链接指向有关如何成功完成这些任务的更多信息。

任务

支持主题

进行动手实践:您可以按照演练过程熟悉如何将数据库对象移到其他架构,并了解其他类型的重构。 通过完成介绍性演练过程,您还可以了解如何将重构用作数据库开发生命周期的一部分。

重命名数据库对象:使用重构功能可以在整个数据库项目中更改对数据库对象的所有引用。 作为重构操作的一部分,可以在应用更改之前预览更改。

撤消重构操作:如果决定取消重构操作,可以撤消 Visual Studio 当前会话中的重构操作。

部署数据库重构更改:重构数据库项目之后,必须将这些更改部署到目标数据库。 通常,您会将更改部署到独立开发环境以测试这些更改,然后再将其签入版本控制。

疑难解答:可以了解有关如何解决数据库重构常见问题的更多信息。

相关方案

重命名对服务器或数据库的引用

将数据库对象移至另一个架构

完全限定数据库对象的名称

扩展 SELECT 语句中的通配符

请参见

概念

重构数据库代码和数据

数据库和服务器项目概述