导出数据层应用程序

适用于: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 名称设置为数据库名称。

限制和局限

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

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

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

配置系统的 %TEMP% 文件夹:

  • 按 Windows 键+Pause/Break,或右键单击“此电脑”并选择“属性”,打开“系统属性”窗口

  • 选择左侧标记为“高级系统设置”的链接

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

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

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

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

权限

要导出 DAC,至少需要拥有 ALTER ANY 登录权限和数据库级别的 VIEW DEFINITION 权限以及对 sys.sql_expression_dependencies 的 SELECT 权限。 持有 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 的名称以及指向将用于放置导出文件的文件夹的路径。

另请参阅