数据层应用程序 (DAC)

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

数据层应用程序 (DAC) 是一个逻辑数据库实体,用于定义与用户数据库关联的所有 SQL Server 对象,如表、视图和实例对象(包括登录名)。 DAC 是整个数据库模型的独立单元,在称为 DAC 包或 .dacpac 的项目中可移植。 借助数据层应用程序的工具支持,开发人员和数据库管理员能够将 dacpac 部署到新数据库或现有数据库。 如果部署到现有数据库,则会根据现有状态更新数据库模型,以匹配 dacpac 的内容。 开发人员从 SQL 数据库项目生成 DAC,这是用于生成 SQL 对象的声明性开发概念,用于对数据库架构启用源代码管理。

.bacpac 是用于默认封装数据库架构以及数据库中所存储数据的相关项目。 BACPAC 的主要用例是将数据库从一台服务器移到另一台服务器上(或将数据库从本地服务器移到云中),同时以开放格式对现有数据库进行存档。

数据层应用程序的优点

数据库应用程序的生命周期可能涉及开发人员和 DBA 交换脚本并共享有关应用程序更新活动的一次性集成说明。 虽然这一过程在某些情况下是可接受的,但很难与 DevOps 管道和常规开发流程集成。

数据层应用程序有利于声明性数据库开发,可简化开发过程并提供更一致且可预测的开发体验。 开发人员可以在所选的集成开发环境 (IDE) 中使用 SQL 数据库项目创建数据库。 SQL 数据库项目可以在本地或 DevOps 管道中编译为 DAC 包。 然后 DAC 包将通过自动化流程或通过 CLI 或 GUI 工具手动部署到测试、暂存或生产数据库。 .dacpac 可用于更新具有新对象或已修改对象的数据库、还原到以前版本的数据库或预配全新的数据库。 与之相反,.dacpac 可从现有数据库生成,并用于建立基于当前数据库架构的 SQL 数据库项目。

相比迁移驱动过程,DAC 驱动部署的优势在于该过程能够识别和验证来自不同源数据库和目标数据库的行为。 在数据库部署/升级期间使用的工具提供了有风险操作(例如可能会导致数据丢失的列大小更改)标记选项,此外还能够直接编写升级计划脚本。 可以首先手动评估此计划,然后再继续更新。

操作

DAC 简化了支持应用程序的数据层元素的开发、部署和管理。

DACPAC

DAC 支持以下操作:

可以在 SqlPackage、SQL Server Management Studio、Azure Data Studio 和 SQL Server Data Tools 中找到这些功能。

SQL 数据库项目

SQL 项目支持以下操作:

  • BUILD - 用户可以将 SQL 数据库项目生成到 .dacpac 中。

  • PUBLISH - 用户可以将 SQL 数据库项目发布到主机服务器。

  • EXTRACT - 用户可将数据库提取到 SQL 数据库项目中。

可以在 Azure Data Studio、Visual Studio Code 和 SQL Server Data Tools 中找到这些功能。

BACPAC

相比之下,.bacpac 侧重于捕获架构和数据,支持以下两种主要操作:

SqlPackage、SQL Server Management Studio、Azure Data Studio 和 Azure 门户等工具支持这些功能。

DAC 工具

数据层应用程序项目和 SQL 项目可以跨多个工具使用。 这些工具可满足不同用户角色的要求。

DACPAC 和 BACPAC

以下工具支持 DAC 包和 BAC 包格式:

在这些工具中,可以将数据库提取到 .dacpac 或导出到 .bacpac。 与之相反,可以将 .bacpac 导入新数据库,也可以将 .dacpac 发布到新数据库或现有数据库。

DACPAC 和 SQL 项目

除提供 SQL 数据库项目编辑功能外,以下工具还支持 DAC 包格式:

在这些工具中,开发人员可以在未连接的客户端开发环境中设计数据库。 这些工具可用于创建 DAC 包、将 DAC 包部署到数据库,以及将数据库包导入 SQL 项目。

DAC 概念

版本支持

通常,DAC 工具可以读取由早期版本的 SQL Server 中的 DAC 工具生成的 .dacpac 文件,并且可以将 DAC 包 部署到早期版本的 SQL Server。 但是,早期版本的 DAC 工具无法读取由更高版本 DAC 工具生成的 .dacpac 文件。 DAC 工具至少会支持在发布时支持的 SQL Server 版本。

文件格式

.dacpac 是一种以 .dacpac 为扩展名的压缩文件夹,同样,.bacpac 是一种以 .bacpac 为扩展名的压缩文件夹。 高级用户可以解压缩文件以查看多个 XML 部分,这些部分说明了源的详细信息、数据库中的对象和其他特征。 要解压缩 .dacpac.bacpac,请将文件扩展名替换为 .zip,并使用文件压缩工具解压缩文件。

数据层应用程序注册

在 SQL Server Management Studio 中,可以对数据库执行其他操作,以将其注册为数据层应用程序。

  • REGISTER - 用户可以将数据库注册为数据层应用程序。

  • UNREGISTER - 可以注销之前注册为 DAC 的数据库。

  • UPGRADE - 可以使用 .dacpac 升级数据库。

有关这些操作的详细信息,请参阅以下任务。

任务 文章链接
介绍如何使用新的 DAC 包文件将某一实例升级到该 DAC 的新版本。 升级数据层应用程序
介绍如何删除 DAC 实例。 您还可以选择是分离或删除关联数据库,还是保持数据库不变。 删除数据层应用程序
介绍如何将现有数据库提升为 DAC 实例。 DAC 定义将生成并存储于系统数据库中。 将数据库注册为 DAC
介绍如何查看 DAC 包的内容以及在生产系统中使用该包之前 DAC 升级将执行的操作。 验证 DAC 包

后续步骤