如何:将更改部署到新数据库或现有数据库

更新:2010 年 6 月

对数据库项目进行更改后,必须将这些更改部署到数据库服务器。 部署数据库项目时,系统会比较您在数据库项目中定义的架构和目标架构,以确定为同步架构而必须执行的一组操作。 这些操作与预先部署脚本和后期部署脚本组合在一起,构成了一个完整的部署脚本。 如果目标数据库不存在或者您选择始终重新创建数据库,则使用 .dbschema 文件中定义的架构来创建数据库。 当创建新的数据库时,如果已存在一个数据库,则部署脚本将尝试删除同名的现有数据库。 如果自上次生成或部署之后数据库项目、数据库项目的属性或内容已经更改,则生成项目时会生成最新的 .dbschema 文件。

在生产环境中,您可能不会直接部署到目标数据库。 相反,您将生成部署脚本(一个 .SQL 文件),检查并选择性地更新脚本,然后再使用**“Transact-SQL 编辑器”部署它。 也可以使用诸如“SQL Server Management Studio”**等工具。

还可使用 VSDBCMD.EXE 工具部署您的数据库。 可指定要用来部署数据库的 .dbschema 文件。 可使用 VSDBCMD 从未安装 Visual Studio 的计算机部署。 有关更多信息,请参见如何:准备数据库以使用 VSDBCMD.EXE 从命令提示符处进行部署

重要说明重要事项

在部署数据库项目前,必须设置项目属性,指定目标数据库连接和数据库名称。 如果使用“新建数据库项目向导”生成数据库对象,则可能已经指定了项目属性。 您可以随时更改项目属性。 有关更多信息,请参见如何:为数据库项目配置数据库属性

所需权限

必须具有创建数据库(用于新部署)以及创建、修改和删除该数据库中的架构对象的必要权限才能部署数据库项目。

部署到单个数据库

可以通过使用 Visual Studio 从命令提示符处部署数据库,或者通过在 Transact-SQL 编辑器中运行部署脚本来部署数据库。 可以使用 Visual Studio 中提供的 Transact-SQL 编辑器,也可以使用诸如 SQL Server Management Studio 等工具。

将数据库项目部署到新数据库或现有数据库

  1. 在**“解决方案资源管理器”**中,单击要部署的数据库项目。

    如果创建了自定义配置,则可以通过在**“标准”工具栏上的“解决方案配置”**列表中单击其名称指定应使用该配置。 在默认情况下,您只有一个用于数据库项目的配置,并且该配置已经选中。

  2. 在**“生成”菜单上,单击“部署”**。

    即会生成数据库项目的生成输出(如果该生成输出不存在或者不是最新版本),然后对它进行部署。 **“输出”**窗口显示部署结果,如下所示:

    项目名称 -> D:\Documents and Settings\用户名\My Documents\Visual Studio 2008\Projects\解决方案名称\项目名称\sql\项目名称.dbschema

    ------ 部署已开始: 项目: 项目名称,配置: 调试任意 CPU ------

    已生成部署脚本 项目名称.sql

    正在创建项目名称

    正在创建 dbo.项目名称

    .

    .

    .

    .

    ========== 生成: 1 成功或最新,0 失败,0 被跳过 ==========

    ========== 部署: 1 成功,0 失败,0 被跳过 ==========

从命令行将数据库项目部署到新数据库或现有数据库

  1. 打开**“命令提示符”**窗口,并定位到您的项目目录。

  2. 在命令提示符处,键入以下示例命令行以部署数据库项目(其中 DatabaseProject 是项目的名称):

    MSBuild /t:Build;Deploy DatabaseProject.dbproj

    提示

    MSBuild.exe 必须位于 PATH 环境变量指定的路径。 此外,必须在数据库项目中或作为命令行的一部分指定 TargetDatabase 和 TargetConnectionString。 有关创建生成脚本的命令行语法的更多信息,请参见数据库生成和部署概述

    将会显示类似下面的结果:

    Microsoft (R) Build Engine Version 3.5.21022.8

    [Microsoft .NET Framework, Version 2.0.50727.1433]

    Copyright (C) Microsoft Corporation 2007. All rights reserved.

    Build started 5/20/2008 1:36:58 PM.

    Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" on node 0 (Deploy target(s)).

    Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" (1) is building "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.deploymanifest" (2) on node 0 (DspDeploy target(s)).

    Deployment script 项目名称.sql generated

    :

    (1 row(s) affected)

    Done Building Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.deploymanifest" (DspDeploy

    target(s)).

    Done Building Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" (Deploy target(s)).

    Build succeeded.

    0 Warning(s)

    0 Error(s)

    Time Elapsed 00:00:07.32

通过运行部署脚本部署数据库

  1. 在所选的 Transact-SQL 编辑器中打开部署脚本。

    提示

    此过程假定您使用的是 Visual Studio 附带的 Transact-SQL。

    编译的部署脚本名为 ProjectName.sql,位于 SolutionName\ProjectName\sql\Configuration 文件夹中。 Configuration 是生成配置的名称,例如,“Debug”或“Release”。

  2. 如果未启用 SQLCMD 模式,请在菜单栏上,依次选择**“数据”“Transact-SQL 编辑器”“SQLCMD 模式”**。

    重要说明重要事项

    如果未启用 SQLCMD 模式,则当您运行部署脚本时将发生错误,因为不支持 :setvar 语句。

  3. 在菜单栏上,依次选择**“日期”“Transact-SQL 编辑器”“执行 SQL”**以运行部署脚本。 在系统提示您时,请指定要部署到的服务器的连接信息。

    这将运行部署脚本并创建您的数据库。

部署到多个数据库或多台服务器

您可以将架构部署到多个数据库或多台服务器。 如果要部署到不发生变化的少量服务器或数据库(例如,希望既部署到个人开发服务器上又部署到临时服务器上),则可以创建多个生成配置。 每个生成配置都可以有一个不同的目标服务器或数据库。 如果需要部署到大量服务器上或者目标服务器或数据库的名称会定期更改,则应当使用另一种方法。 下面介绍了这些方法。

创建部署到多台服务器或多个数据库所用的多个生成配置

  1. 在 Visual Studio中打开数据库项目。

  2. 在**“生成”菜单上,单击“配置管理器”**。

    将显示**“配置管理器”**对话框。

  3. 在**“活动解决方案配置”列表中,单击“<新建>”**。

    即会出现**“新建解决方案配置”**对话框。

  4. 在**“名称”**中,键入第一个服务器配置的名称。

  5. 如果您的项目属性已配置为“默认”配置,请在**“从此处复制设置”列表中单击“默认”**。

  6. 单击**“确定”**。

  7. 在**“活动解决方案配置”列表框中,单击“<新建>”**。

    即会出现**“新建解决方案配置”**对话框。

  8. 在**“名称”**中,键入第二个服务器配置的名称。

  9. 如果您的项目属性已配置为“默认”配置,请在**“从此处复制设置”列表中单击“默认”**。

    提示

    还可以为每个命名配置配置数据库名称和连接字符串。

  10. 单击**“关闭”**。

  11. 在**“解决方案资源管理器”中右击数据库项目并单击“属性”**。

  12. 单击**“生成”**选项卡。

  13. 在**“配置”**中,单击第一个服务器配置的名称。

  14. 修改目标连接和数据库的名称,使其与第一个服务器配置相匹配。

  15. 在**“配置”**中,单击第二个服务器配置的名称。

  16. 修改目标连接和数据库的名称,使其与第二个服务器配置相匹配。

  17. 在**“文件”菜单上,单击“保存选定项”**保存配置设置。

    现在您可以在**“标准”**工具栏上指定配置,然后生成或部署该配置。

使用 MSBuild 从命令行部署到数据库

  • 在命令提示符窗口中,通过键入以下命令行来部署生成脚本(请将服务器名称和目标配置替换为相应的值)。

    MSBuild /t:Deploy /p:Configuration=目标配置 数据库项目名.dbproj

    提示

    若要部署到多台服务器,必须通过在命令提示窗口中指定如下内容来重写目标连接字符串属性:/p:TargetConnectionString="Data Source=服务器名称;Integrated Security=True;Pooling=False"。 可以为每个目标服务器定义一个配置,然后指定要部署的配置。

使用 VSDBCMD 从命令提示符处部署数据库项目

  • 重要说明重要事项

    此过程假定您已将必需的文件复制到要从中运行 VSDBCMD 的计算机。 有关更多信息,请参见如何:准备数据库以使用 VSDBCMD.EXE 从命令提示符处进行部署

    打开命令提示符窗口,键入以下命令行:

     VSDBCMD /a:Deploy /dd:+ /manifest:manifestFileName.dbmanifest
    

    部署清单提供您可以在命令行上以别的方式指定的其他设置(例如目标数据库名称、连接字符串等)。

请参见

任务

如何:生成数据库项目以生成经过编译的架构 (.dbschema) 文件

演练:将更改部署到受版本控制的现有数据库

概念

数据库生成和部署概述

数据库项目设置概述

修订记录

日期

修订记录

原因

2010 年 6 月

已清理简介,并已添加有关如何使用 VSDBCMD 进行部署以解决客户反馈的更多信息。

客户反馈

2011 年 5 月

已添加介绍如何在 Transact-SQL 编辑器中运行部署脚本的过程。

客户反馈