从数据库中提取 DACPAC

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 预览版中的 SQL 数据库

提取过程创建一个 DAC 包文件(.dacpac),其中包含数据库对象的定义及其相关的实例级元素。 例如, .dacpac 文件包含数据库表、存储过程、视图和用户,以及映射到数据库用户的登录名。 该文件 .dacpac 可用于将数据库部署到 SQL Server 或 Azure SQL 数据库的另一个实例,或者将数据库注册为当前实例中的数据层应用程序(DAC)。

提取.dacpac的选项包括:

  1. SQL Server Management Studio 中的“提取数据层应用程序”向导(SSMS)
  2. SQL Server 数据工具
  3. SqlPackage 命令行实用工具

Permissions

.dacpac提取至少需要ALTER ANY LOGIN和数据库范围VIEW DEFINITION权限,同时需要对sys.sql_expression_dependencies具有SELECT权限。 securityadmin 固定服务器角色的成员,如果也是 database_owner 固定数据库角色的成员,则有资格提取 。 sysadmin 固定服务器角色或名为sa的内置 SQL Server 系统管理员帐户的成员也可以提取一个.dacpac

使用提取数据层应用程序向导

使用向导提取 DAC

  1. 对象资源管理器中,展开包含要从中提取数据库的实例的 .dacpac 节点。
  2. 展开“数据库”节点。
  3. 右键单击要从中提取 .dacpac 的数据库节点,指向 任务,然后选择 提取数据层应用程序...
  4. 完成向导对话框:
    1. Introduction Page
    2. “选择数据”页
    3. “设置属性”页
    4. “验证和摘要”页
    5. “生成包”页

向导简介页

此页描述用于提取数据层应用程序的各个步骤。

不要再次显示此页面。 - 选中复选框可阻止页面在将来显示。

下一步 > - 进入“选择方法”页

取消 - 结束向导且不从数据层提取数据层应用程序。

选择数据页

选择要包含在数据层应用程序(DAC)包文件中的引用数据。 在 DAC 包中包括数据是可选的。 其中包括 .dacpac 与数据库相关的所有受支持的数据库对象和实例对象的架构。

您可以在 DAC 包文件中包含多达 10 MB 的引用数据。 但是,对于 DAC 中包含的表,它们可能不包含二进制大型对象(BLOB)数据类型,例如图像varchar(max)。 若要提取大量数据以转移到另一个数据库,应使用 SQL Server Integration Services、大容量复制实用工具或许多其他数据迁移方法之一。

数据库表 - 对于包含你要包括在 DAC 包中的数据的数据库表,在其旁边选中对应的复选框。 最多可以选择 10 个行数不超过 10,000 的表。

设置属性页

使用该向导页描述数据层应用程序 (DAC)。 这些属性用于标识 DAC,并有助于与其他应用程序区分开。

名称 - 此名称标识 DAC。 它可以不同于 DAC 包文件的名称,并且应描述您的应用程序。 例如,如果数据库用于财务应用程序,则可能需要命名 DAC Finance。

版本(使用 xx.xx.xx.xx,其中 x 是数字) - 标识 DAC 版本的数值。 在 Visual Studio 中,DAC 版本用于识别开发人员正在处理的具体 DAC 版本。 部署 .dacpac 后,版本存储在 msdb 数据库中,稍后可以在 SQL Server Management Studio 的 “数据层应用程序” 节点下查看。

说明: - 可选。 说明该 DAC。 当部署 .dacpac 时,其描述将存储在 msdb 数据库中,以后可以在 Management Studio 中的 数据层应用程序 节点下查看。

保存到 DAC 包文件(文件名中包括 .dacpac 扩展名): - 将 DAC 保存到某一 DAC 包文件,并且具有 .dacpac 扩展名。 选择 “浏览 ”按钮以指定文件的名称和位置。

覆盖现有文件 - 如果已存在同名的 DAC 包文件,则选中此复选框可以替换该文件。

验证和摘要页面

在此页上,向导将验证数据层应用程序(DAC)中是否支持所有数据库对象。 它还检查数据库对象之间的依赖关系,以便确定该组对象是否可以成功包括在 DAC 中。 之后,它会显示验证报告,并汇总了在此向导中选择的选项。 若要更改选项,请选择“上一项”。 若要开始提取 DAC,请选择“ 下一步”。

Note

如果 DAC 不支持一个或多个对象,则会禁用 “下一步 ”按钮,并且提取过程可能不会继续。 在这种情况下,建议删除不受支持的对象,然后再次运行此向导。

摘要 - 所选选项的摘要列在 DAC 属性下。 验证的结果在 “DAC 对象”下列出。 有三种类型的验证结果:

  • 对象成功包括在 DAC 中:支持这些对象及其依赖关系,并且它们可以成功包括在 DAC 中。

  • DAC 中包含的对象带有警告:支持这些对象,但依赖于 DAC 中不支持的其他对象。

  • DAC 中不包含的对象:不支持这些对象,并且必须先从数据库中删除,然后才能成功提取 DAC。

验证过程将检查多个级别的依赖关系。 例如,如果某一存储过程依赖于使用不支持的 CLR 数据类型的表,则该存储过程将在 “对象包括在 DAC 中但具有警告”下列出。

如果 DAC 不支持一个或多个对象,则会禁用 “下一步 ”按钮,并且提取过程不会继续。 在这种情况下,建议删除不支持的对象,然后再次运行此向导。

保存报告 - 使你可以保存一个基于 HTML 的文件,该文件列出摘要中“DAC 对象”节点下的所有对象。 当 DAC 中不支持某些数据库对象时,此报表非常有用。 在尝试再次提取 DAC 之前,请使用报表更改或删除不支持的对象。

构建包页面

使用该页监视向导在提取数据层应用程序 (DAC) 时的进度。

操作 - 在“创建并保存 DAC 包文件”操作期间,向导从你的 SQL Server 数据库提取 DAC。 然后,一个 DAC 包将在内存中创建并保存到您指定的位置中。 选择 “结果 ”列中的链接以查看相应步骤的结果。

保存报告 - 选择将向导进度的结果保存到文件中。

完成 - 选择在处理完成后或发生错误后关闭向导。