如何:使用重命名和重构更改数据库对象
通过 Transact-SQL 编辑器中的“重构”上下文菜单,可以重命名对象或将对象移到不同架构,并且在提交更改前预览所有受影响的区域。 也可以使用“重构”菜单完全限定对数据库对象的所有引用,或者扩展你的数据库项目的 SELECT
语句中的任何通配符。
警告
以下过程利用在面向项目的脱机数据库开发部分中的之前过程中创建的实体。
重命名类型
在“解决方案资源管理器”中右键单击“Products”表 (Products.sql),然后选择“查看代码”以便在 Transact-SQL 编辑器中打开该脚本。
在脚本中右键单击
[Products]
,然后选择“重构”和“重命名”。在“新名称”字段中,将其更改为 Product。 保持“预览更改”选项选中,然后单击“确定”。
在下一个屏幕中,您将能够预览将会受此重命名操作影响的脚本的列表。 具体来说,引用
Products
的所有位置都将突出显示。 这非常类似于前一过程中的“查找所有引用”任务。 单击顶部窗格中的任意内容,然后在底部窗格的脚本中查看实际更改(以绿色突出显示)。单击“应用”。
对于已在表设计器或 Transact-SQL 编辑器中打开的脚本文件,请注意 Transact-SQL 编辑器已用左侧的绿色条突出显示了发生了更改的位置。
请注意在“解决方案资源管理器”中添加了 TradeDev.refactorlog。 双击将其打开。 它包含此会话中所有更改的 XML 表示形式。
按 F5 以生成该项目并将该项目部署到本地数据库中。
右键单击“SQL Server 对象资源管理器”中“本地”下的“TradeDev”数据库,然后选择“刷新”。
展开“表”,你会发现,Products 表已重命名。
右键单击 Product,然后选择“查看数据”。 请注意,现有的数据保持不变,而与该重命名操作无关。
警告
如果删除了重构日志,则将删除重构的完整历史记录。 将项目发布到尚未应用先前重构操作的数据库时,在删除重构文件之前完成的任何重构操作都将作为删除和创建操作发布。 因此,可能会丢失数据。
展开通配符
在“解决方案资源管理器”中展开“函数”节点,然后双击 GetProductsBySupplier.sql。
将光标放置于此行中的星号上,然后右击。 选择“重构”和“展开通配符”。
SELECT * from Product p
在“预览更改”对话框中,在顶部窗格上单击
SELECT * from Product p
以突出显示它。在下面的“预览更改”窗格中,请注意在脚本中
*
已展开为以下形式。[Id], [Name], [ShelfLife], [SupplierId], [CustomerId]
单击“应用”按钮。 请注意,包含由展开操作产生的更改的行再次用左侧的绿色条突出显示。
完全限定数据库对象名称
请确保 GetProductsBySupplier.sql 仍在 Transact-SQL 编辑器中打开。
将光标放置于此行中的
Product
上,然后右键单击。 选择“重构”和“完全限定名称”。SELECT [Id], [Name], [ShelfLife], [SupplierId], [CustomerId] from Product p
在“预览更改”对话框中,单击“应用”按钮。 请注意,所有的对象引用都已更新,以便包括对象架构的名称和父对象的名称(如果该对象具有父对象)。
SELECT [p].[Id], [p].[Name], [p].[ShelfLife], [p].[SupplierId], [p].[CustomerId] from [dbo].[Product] p
移动架构
右键单击要移动的对象。 选择“重构”和“移动架构”。
在“新架构”列表中,单击要将对象移入的架构名称。 单击“确定”。
如果选中“预览更改”复选框,则显示“预览更改”对话框。 否则,将更新对象名称并将对象移到新架构。