导出数据层应用程序

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

导出部署的数据层应用程序 (DAC) 或数据库将创建一个导出文件,其中同时包括该数据库中的对象定义和表中的所有数据。 然后可将该导出文件导入到其他 数据库引擎实例或 Azure SQL 数据库中。 可以将导出-导入操作组合起来以在实例之间迁移 DAC,或者创建一个存档,或者创建部署在 SQL 数据库中的数据库本地副本。

先决条件

导出过程分两个阶段生成一个 DAC 导出文件。

  1. 导出操作会在导出文件中生成 DAC 定义(BACPAC 文件),DAC 提取操作以同样的方式在 DAC 包文件中生成 DAC 定义。 导出的 DAC 定义包含当前数据库中的所有对象。 假设导出过程是针对最初从 DAC 部署的数据库运行的,并且在部署后直接对数据库进行更改。 在这种情况下,导出的定义与数据库中的对象集(而不是原始 DAC 中定义的对象集)匹配。

  2. 导出操作从数据库中的所有表中大容量复制数据,然后将这些数据集成到导出文件中。

导出过程将 DAC 版本设置为 1.0.0.0,并将导出文件中的 DAC 说明设置为空字符串。 如果从 DAC 部署数据库,则导出文件中的 DAC 定义包含为原始 DAC 指定的名称。 否则,DAC 名称会设置为数据库名称。

权限

要导出 DAC,至少需要拥有 ALTER ANY 登录权限和数据库级别的“查看定义”权限以及对 sys.sql_expression_dependencies` 的“选择”权限。 持有 DAC 源数据库中 securityadmin 固定服务器角色和 database_owner 固定数据库角色成员身份的个人可以完成此任务。 此外,属于 sysadmin 固定服务器角色成员或有权访问名为 sa 的内置 SQL Server 系统管理员帐户的用户也可导出 DAC。

在 Azure SQL 数据库上,必须为每个数据库授予对所有表或特定表的“查看定义”和“选择”权限。

使用导出数据层应用程序向导

使用向导导出 DAC

  1. 连接到 SQL Server 实例(无论是本地部署中还是在 SQL 数据库中)。

  2. “对象资源管理器”中,展开要从中导出 DAC 的实例的节点。

  3. 右键单击数据库名称。

  4. 选择“任务”,然后选择“导出数据层应用程序…”

  5. 完成向导对话框:

“简介”页

此页介绍“导出数据层应用程序向导”的各个步骤。

选项

不再显示此页。 - 选择此复选框可以停止在将来显示“简介”页。

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

取消 - 取消操作并关闭向导。

导出数据层应用程序简介页的屏幕截图。

“导出设置”页

使用此页可以指定要创建 BACPAC 文件的位置。

  • 保存到本地磁盘 - 在本地计算机上的目录中创建 BACPAC 文件。 选择“浏览...”以在本地计算机上浏览,或指定所提供空间中的路径。 路径名必须包含文件名和 .bacpac 扩展名。

  • 保存到 Azure - 在 Azure 容器中创建 BACPAC 文件。 必须连接到 Azure 容器才能验证此选项。 此选项还要求为临时文件指定一个本地目录。 将在指定位置创建临时文件,并且在操作完成后保留在该位置。

若要指定要导出的表的子集,请使用 “高级” 选项。

导出数据层应用程序“导出设置”页的屏幕截图。

“摘要”页

使用此页面可查看操作的指定源和目标设置。 要使用指定设置完成导出操作,请选择“完成”。 要取消导出操作并退出向导,请选择“取消”

导出数据层摘要页面的屏幕截图。

“进度”页

此页将显示一个指示操作状态的进度栏。 要查看详细状态,请选择“查看详细信息”选项

结果页

此页面报告导出操作的成功或失败,并显示每个操作的结果。 遇到错误的任何操作在“结果”列中都有一个链接。 选择该链接可以查看针对该操作的错误报告。

数据层应用程序结果页面的屏幕截图。

选择“完成”以关闭向导

使用 .NET Framework 应用程序

使用 .Net Framework 应用程序中的 Export() 方法导出 DAC。

  1. 创建一个 SMO Server 对象,并将其设置为包含要导出的 DAC 的实例。

  2. 打开 ServerConnection 对象,并连接到同一实例。

  3. 使用 Export 类型的 Microsoft.SqlServer.Management.Dac.DacStore 方法导出 DAC。 指定要导出的 DAC 的名称以及指向将用于放置导出文件的文件夹的路径。

限制和局限

只能从 SQL 数据库或 SQL Server 2005 (9.x) Service Pack 4 (SP4) 或更高版本的数据库导出 DAC 或数据库。

不能导出具有 DAC 不支持的对象或包含用户的数据库。 有关 DAC 中支持的对象类型的详细信息,请参阅 DAC Support For SQL Server Objects and Versions

如果收到“操作失败,磁盘空间不足”消息,建议将系统的 % TEMP % 文件夹配置为位于不同的数据磁盘上。 这样可以确保导出过程有足够的空间顺利执行,避免潜在的磁盘空间问题。

若要配置系统的 %TEMP% 文件夹,请执行以下操作:

  • 在 Windows 中,打开“系统属性”>“属性”,然后选择标记为“高级系统设置”的链接。

  • 在随后的“系统属性”窗口中,导航到底部并选择“环境变量”

  • 在“系统变量”部分下,找到 TEMP 和 TMP 变量,然后选择与每个变量关联的“编辑”。

  • 修改这两个变量的值,以指向所建立单独数据磁盘上的路径。 例如,假设将数据磁盘指定为 D:,则将值设置为 D:\Temp

  • 选择“确定”并关闭所有打开的窗口,从而确认更改。