如何部署数据层应用程序

使用“部署数据层应用程序向导”可以将数据层应用程序 (DAC) 从一个 DAC 包部署到 SQL Azure 或者 SQL Server 2005 SP4 或更高版本的现有实例中。 该部署过程通过在 msdb 系统数据库(在 SQL Azure 中为 master)中存储 DAC 定义来注册一个 DAC 实例,创建一个数据库,然后使用在该 DAC 中定义的所有数据库对象来填充该数据库。

准备工作

可以将 DAC 从 SQL Server 2005 Service Pack 4 (SP4) 或更高版本部署到 数据库引擎 的一个实例,或者部署到 SQL Azure。 必须使用来自 SQL Server 2008 R2 的客户端工具,并且可能是 DAC Framework 1.1。 有关详细信息,请参阅对 SQL Server 对象和版本的 DAC 支持

对于数据库引擎的托管实例,在下次将实用工具收集组从该实例发送到实用工具控制点时,部署的 DAC 将合并到 SQL Server 实用工具中。 然后,该 DAC 将出现 Management Studio**“实用工具资源管理器”“已部署的数据层应用程序”节点中,并且在“已部署的数据层应用程序”**详细信息页中报告。

有关创建 DAC 包的详细信息,请参阅实现数据层应用程序

要求

在连接到 SQL Server 2005 SP4 或更高版本时,DAC 只能由 sysadminserveradmin 固定服务器角色的成员部署,或者由 dbcreator 固定服务器角色中具有 ALTER ANY LOGIN 权限的登录名部署。 名为 sa 的内置 SQL Server 系统管理员帐户也可以部署 DAC。 将具有登录名的 DAC 部署到 SQL Azure 要求 loginmanager 或 serveradmin 角色的成员身份。 将不具有登录名的 DAC 部署到 SQL Azure 要求 dbmanager 或 serveradmin 角色的成员身份。

安全说明安全说明

建议您不要从未知或不可信源部署 DAC 包。 此类 DAC 可能包含恶意代码,这些代码可能会执行非预期的 Transact-SQL 代码,或者通过修改架构导致错误。 在使用来自未知或不可信源的 DAC 之前,请解压缩该 DAC 并检查代码,例如存储过程或者其他用户定义的代码。 有关如何查看 DAC 的内容的详细信息,请参阅如何验证 DAC 包

登录密码

为了提高安全性,SQL Server 身份验证登录名存储在 DAC 包中且没有任何密码。 在部署或升级该包时,登录名将作为含有生成的密码的已禁用登录名创建。 若要启用这些登录名,请使用具有 ALTER ANY LOGIN 权限的登录名登录,并且使用 ALTER LOGIN 来启用该登录名并且分配可以传达给用户的新密码。 对于 Windows 身份验证登录名则无需执行此操作,因为其密码不是由 SQL Server 管理的。

数据库选项和设置

默认情况下,在部署过程中创建的数据库将具有来自 CREATE DATABASE 语句的几乎所有默认设置,只有以下方面除外:

  • 数据库排序规则和兼容级别设置为在 DAC 包中定义的值。 从 Visual Studio 中的某一 DAC 项目生成的包将使用在该 DAC 项目中设置的值。 从现有数据库中提取的包将使用来自原始数据库的值。

  • 您可以在**“更新配置”**页中调整某些数据库设置,例如数据库名称和文件路径。 在部署到 SQL Azure 时,不能设置文件路径。

某些数据库选项(例如 TRUSTWORTHY、DB_CHAINING 和 HONOR_BROKER_PRIORITY)不能作为部署过程的一部分进行调整。 物理属性(例如文件组的数目或者文件的数目和大小)不能作为部署过程的一部分进行更改。 在部署完成后,可以使用 ALTER DATABASE 语句、SQL Server Management Studio 或 SQL Server PowerShell 对数据库进行定制。 有关详细信息,请参阅修改数据库

多个部署

同一 DAC 包可以多次部署到 数据库引擎 的单个实例上,但必须一次一个执行这些部署。 为每个部署指定的 DAC 实例名称在数据库引擎实例中必须唯一。

使用 PowerShell 部署 DAC

创建包含以下代码的 PowerShell 脚本 (.ps1) 文件。

  1. 添加代码以便创建一个 SMO Server 对象,并且将该对象设置为包含您要从其提取 DAC 的数据库的实例。 该示例将服务器对象设置为本地计算机上的默认实例:

    ## Set a SMO Server object to the default instance on the local computer.
    CD SQLSERVER:\SQL\localhost\DEFAULT
    $srv = get-item .
    
  2. 添加代码以便打开一个 ServerConnection 对象并连接到相同的实例。

    ## Open a Common.ServerConnection to the same instance.
    $serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)
    $serverconnection.Connect()
    $dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)
    
  3. 添加代码以便加载 DAC 包文件。 此示例加载 MyApplication.dacpac 文件

    ## Load the DAC package file.
    $dacpacPath = "C:\MyDACs\MyApplication.dacpac"
    $fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
    $dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)
    
  4. 添加代码以便订阅 DAC 部署事件。

    ## Subscribe to the DAC deployment events.
    $dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})
    $dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})
    
  5. 添加代码以便部署 DAC、创建数据库和关闭 DAC 包文件:

    ## Deploy the DAC and create the database.
    $dacName  = "MyApplication"
    $evaluateTSPolicy = $true
    $deployProperties = New-Object Microsoft.SqlServer.Management.Dac.DatabaseDeploymentProperties($serverconnection,$dacName)
    $dacstore.Install($dacType, $deployProperties, $evaluateTSPolicy)
    $fileStream.Close()
    

从您已加载了 SQL Server PowerShell 管理单元的 PowerShell 会话或者通过使用 sqlps 命令提示实用工具,运行 DeployDAC.ps1。

使用“部署数据层应用程序向导”

在 Management Studio 中,您可以通过导航到**“对象资源管理器”中某一服务器下的“管理”节点,右键单击“数据层应用程序”节点,然后选择“部署数据层应用程序…”**,启动“部署数据层应用程序向导”。

该向导将 DAC 部署到与您在**“对象资源管理器”**层次结构中所选节点相关联的数据库引擎实例。 例如,如果您通过右键单击名为 ProductionServer01/Accounting 的实例的服务器节点启动该向导,则 DAC 将部署到数据库引擎的该实例。

单击下面列表中的链接可以导航到向导中某一页的详细信息:

  • “简介”页

  • “选择 DAC 包”页

  • “查看策略”页

  • “更新配置”页

  • “摘要”页

  • “部署”页

“简介”页

此页描述数据层应用程序的部署步骤。

不再显示此页。 - 选中该复选框可以停止在将来显示此页。

下一步> - 继续到**“选择 DAC 包”**页。

取消 - 终止向导且不部署 DAC。

“选择 DAC 包”页

使用此页可以指定包含要部署的数据层应用程序的 DAC 包。 该页可为三种状态。

选择 DAC 包

使用该页的初始状态可以选择要部署的 DAC 包。 该 DAC 包必须是有效的 DAC 包文件,并且必须具有 .dacpac 扩展名。

DAC 包 - 指定包含要部署的数据层应用程序的 DAC 包的路径和文件名。 您可以选择框右侧的**“浏览”**按钮以便浏览到 DAC 包的位置。

应用程序名称 - 一个只读框,它显示创作 DAC 或者从某一数据库中提取 DAC 时分配的 DAC 名称。

版本 - 一个只读框,它显示创作 DAC 或者从某一数据库中提取 DAC 时分配的版本。

说明 - 一个只读框,它显示创作 DAC 或者从某一数据库中提取 DAC 时编写的版本。

< 上一步 - 返回到**“简介”**页。

下一步 > - 在向导确认所选文件是有效的 DAC 包时显示一个进度栏。

取消 - 终止向导且不部署 DAC。

验证 DAC 包

在向导确认所选文件是有效的 DAC 包时显示一个进度栏。 如果对该 DAC 包进行了验证,则向导将继续到**“选择包”页的最终形式,从中可以查看验证的结果。 如果该文件不是有效的 DAC 包,则向导会保持在“选择 DAC 包”**页上。 或者选择另一个有效的 DAC 包,或者取消该向导并且生成一个新的 DAC 包。

正在验证 DAC 的内容 - 报告验证过程的当前状态的进度栏。

< 上一步 - 返回到**“选择包”**页的初始状态。

下一步> - 继续到**“选择包”**页的最终形式。

取消 - 终止向导且不部署 DAC。

“查看策略”页

使用此页可查看评估 DAC 服务器选择策略的结果(如果该 DAC 具有策略)。 该 DAC 服务器选择策略是可选的,并在 Visual Studio 中创建它时分配给该 DAC。 该策略使用该服务器选择策略方面指定数据库引擎的实例为承载该 DAC 而必须满足的条件。

策略条件的评估结果 - 一个只读报告,显示 DAC 部署策略的条件是否成功。 将在单独的行上报告对每个条件进行评估的结果。

在将 DAC 部署到 SQL Azure 时以下服务器选择策略的计算结果始终为 false:操作系统版本、语言、启用的命名管道、平台和启用的 tcp。

忽略违反策略情况 - 使用此复选框可以在未能满足一个或多个策略条件的情况下继续进行部署。 只有在您确保未满足的所有条件都不会阻碍 DAC 操作成功条件的情况下,才选择此选项。

< 上一步 - 返回到**“选择包”**页。

下一步 > - 继续到**“更新配置”**页。

取消 - 终止向导且不部署 DAC。

“更新配置”页

使用此页可指定已部署的 DAC 实例的名称以及部署创建的数据库的名称,并且可设置数据库选项。

数据库名称: - 指定要由部署创建的数据库的名称。 默认值是从其提取该 DAC 的源数据库的名称。 该名称在 数据库引擎 的实例内必须唯一,并且必须符合 数据库引擎 标识符的规则。

如果您更改数据库名称,则数据文件和日志文件的名称也将更改以匹配这个新值。

该数据库名称还用作 DAC 实例的名称。 该实例名称显示在**“对象资源管理器”“数据层应用程序”节点下的 DAC 的节点上,或者显示在“实用工具资源管理器”“已部署的数据层应用程序”**节点下的 DAC 的节点上。

以下选项不应用于 SQL Azure,并且在部署到 SQL Azure 时不显示。

使用默认数据库位置 - 选择此选项可在数据库引擎实例的默认位置中创建数据库数据和日志文件。 将使用数据库名称生成文件名。

指定数据库文件 - 选择此选项可为数据文件和日志文件指定其他位置或名称。

数据文件路径和名称: - 指定数据文件的完整路径和文件名。 该框将用默认路径和文件名填充。 编辑该框中的字符串可以更改默认值,或者使用“浏览”按钮可以导航到要用于放置数据文件的文件夹。

日志文件路径和名称: - 指定日志文件的完整路径和文件名。 该框将用默认路径和文件名填充。 编辑该框中的字符串可以更改默认值,或者使用**“浏览”**按钮可以导航到要用于放置日志文件的文件夹。

< 上一步 - 返回到**“选择 DAC 包”**页。

下一步 > - 继续到**“摘要”**页。

取消 - 终止向导且不部署 DAC。

“摘要”页

使用此页可以查看在部署 DAC 时向导将执行的操作。

将使用以下设置部署 DAC。 - 查看显示的信息以便确保将执行的操作正确。 该窗口显示您选择的 DAC 包,以及您为部署的 DAC 实例选择的名称。 该窗口还显示在创建与该 DAC 相关联的数据库时将使用的设置。

< 上一步 - 返回到**“更新配置”**页以便更改您的选择。

下一步 > - 部署 DAC 并在**“部署 DAC”**页中显示结果。

取消 - 终止向导且不部署 DAC。

“部署”页

此页报告部署操作是成功还是失败。

部署 DAC - 报告为部署 DAC 而执行的每个操作是成功还是失败。 查看信息以便确定每个操作是成功还是失败。 遇到了错误的任何操作都将在**“结果”**列中具有一个链接。 选择该链接可以查看针对该操作的错误报告。

保存报表 - 选择此按钮可以将部署报表保存到某一 HTML 文件。 该文件报告每个操作的状态,并且包括任何操作生成的所有错误。 默认文件夹是您的 Windows 帐户的 Documents 文件夹中的 SQL Server Management Studio\DAC Packages 文件夹。

完成 - 终止向导。

更改历史记录

更新的内容

添加了有关使用 PowerShell 的部分。