更新:2007 年 11 月
在 Visual Studio Team System Database Edition 中工作时,可更改数据库的脱机表示形式。若要将这些更改提交到活动数据库,必须生成并部署数据库项目。将更改部署到开发数据库、测试数据库或成品数据库的过程很相似。
![]() |
---|
各种类型的数据库的部署过程都很相似。但是,执行部署的人可能不尽相同。例如,在某些情况下,只有数据库管理员 (DBA) 具有部署到成品数据库的权限。 |
在前一个演练 演练:重命名数据库列 中,您创建了一个数据库项目,导入了 Northwind 数据库架构并对一列进行了重命名。在本演练中,您将生成并部署此更改。
先决条件
若要完成本演练,您需要:
Database Edition。
Microsoft SQL Server 2000 或 SQL Server 2005。
在 演练:重命名数据库列 中创建的数据库项目。
生成数据库项目
打开您在 演练:重命名数据库列 中创建的名为 RefactorNorthwind 的数据库项目。
在“生成”菜单上,单击“生成解决方案”。
“错误列表”窗口中可能会出现生成错误。例如,如果存储过程在不对列进行限定的情况下选择了一列,并且您重命名了此列,则该名称将不会在存储过程中更新。这种情况会导致生成错误,因为存储过程现在选择了一个不存在的列名称。若要防止这些类型的错误发生,请确保列名称在 Transact-SQL (T-SQL) 代码中是完全限定的。若要修复这些类型的错误,必须手动更新列名称。例如,如果将列从 Orders.ShippedDate 重命名为 Orders.ShippedDateAndTime,必须手动更新存储过程 Sales by Year。将下面的存储过程:
create procedure "Sales by Year" @Beginning_Date DateTime, @Ending_Date DateTime AS SELECT Orders.ShippedDateAndTime, Orders.OrderID, "Order Subtotals".Subtotal, DATENAME(yy, ShippedDate) AS Year FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID WHERE Orders.ShippedDateAndTime Between @Beginning_Date And @Ending_Date
更改为:
create procedure "Sales by Year" @Beginning_Date DateTime, @Ending_Date DateTime AS SELECT Orders.ShippedDateAndTime, Orders.OrderID, "Order Subtotals".Subtotal, DATENAME(yy, Orders.ShippedDateAndTime) AS Year FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID WHERE Orders.ShippedDateAndTime Between @Beginning_Date And @Ending_Date
设置项目的部署属性
在“解决方案资源管理器”中,单击数据库项目 RefactorNorthwind。
在“项目”菜单上,单击“RefactorNorthwind 属性”。
将显示项目属性。
单击“生成”选项卡。
单击标签为“...”的按钮显示“连接属性”对话框。
设置要使用的数据库的连接属性,然后单击“确定”。
“目标连接”框用正确的连接字符串填充。
警告:
应该针对测试数据库或开发数据库测试此部署。不应针对成品数据库测试此部署。
在“目标数据库名称”框中键入目标数据库的名称。
警告:
默认情况下,“目标数据库名称”框由数据库项目的名称填充。如果数据库项目名称不是目标数据库名称,则必须更改此字段。
选中“为目标数据库中存在而数据库项目中不存在的对象生成 DROP 语句”复选框。在某些情况下,此复选框非常重要,例如重命名表时。生成的部属脚本将包含一个用于具有旧名称的表的 DROP 语句和一个用于具有新名称的表的 CREATE TABLE 语句。可以清除“为目标数据库中存在而数据库项目中不存在的对象生成 DROP 语句”复选框以防止具有旧名称的表被删除。防止这种情况下的可能的数据丢失有多种方法,这只是其中的一种。有关更多信息,请参见在重命名操作期间保护数据。
在“文件”菜单上,单击“全部保存”。
在“生成”菜单上,单击“生成解决方案”。
即会基于刚刚设置的项目属性生成部署脚本。生成状态将显示在“输出”窗口中,最后一行应显示“生成: 1 成功或最新”。
部署数据库项目
在“文件”菜单上,指向“打开”,然后单击“文件”。
“打开”对话框随即出现。
在“文件名”框中,键入下面的地址,然后单击“打开”。
您的路径\RefactorNorthwind\Sql\RefactoringDeploy.您的服务器.Northwind.sql
在部署脚本中,找到以下各行:
DROP TABLE [dbo].[Orders]
和
CREATE TABLE [dbo].[Orders]
这些行对应于您在上一个演练中所做的重构更改。此时,您可以更改部署脚本。例如,可以删除不想部署的 DROP 语句。有关更多信息,请参见在重命名操作期间保护数据。对于本演练,可以不对部署脚本进行任何操作。
警告:
如果更改部署脚本,则必须通过从 T-SQL 编辑器运行部署脚本手动对其进行部署。不能使用部署命令对其进行部署。
关闭部署脚本。
在“视图”菜单上单击“服务器资源管理器”。
“服务器资源管理器”窗口随即显示,目标数据库出现在“数据连接”下。如果目标数据库没有显示出来,请打开“工具”菜单,然后单击“连接到数据库”添加一个到目标数据库的连接。
在“服务器资源管理器”中,展开目标数据库,展开“表”节点,然后展开 Orders 表。
将显示具有原始名称的 ShippedDate 列。
在“解决方案资源管理器”中,单击数据库项目 RefactorNorthwind。
在“生成”菜单上单击“部署”。也可以在“解决方案资源管理器”中右击项目,然后单击“部署”。
警告:
应该针对测试数据库或开发数据库运行此部署。不应针对成品数据库运行此部署。
可以通过使用部署脚本来将数据库项目部署到目标数据库中。部署状态显示在“输出”窗口中,最后一行应显示“部署已成功”。
在“服务器资源管理器”中,右击“表”节点,然后单击“刷新”。
将显示具有新名称 ShippedDateAndTime 的 ShippedDate 列。