Editar

Compartir a través de


Data-tier applications (DAC) overview

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance SQL database in Microsoft Fabric

A data-tier application (DAC) is a logical database entity that defines all of the SQL Server objects - such as tables, views, and instance objects, including logins - associated with a user's database. A data-tier application is a self-contained unit of the entire database model and is portable in both .dacpac and .bacpac packages. Tooling support for data-tier applications enable developers and database administrators to apply .dacpac and .bacpac files to new or existing databases or generate new files from existing databases.

Operations

BACPAC operations

The .bacpac file format is a related artifact that by default encapsulates the database schema and the data stored in the database. Objects in the .bacpac database model are limited to the surface area of Azure SQL Database. The primary use case for a .bacpac is to move a database from one server to another - or to migrate a database from a local server to the cloud - and archiving an existing database in an open format.

Learn more about database portability from the SqlPackage portability documentation.

DACPAC operations

The .dacpac data-tier application package is the build artifact from SQL database projects and can be used as part of a comprehensive database lifecycle management and DevOps strategy. Data isn't included in a .dacpac by default, but you can choose to include data from user tables when you extract a .dacpac from a live SQL Server or Azure SQL Database. As an integral part of the SQL database project workflow and database development lifecycle, .dacpac files are used in several operations. The primary operations are:

  • Extract - the user can extract a database into a .dacpac. For more information, see SqlPackage extract and Extract a DAC From a Database.
  • Deploy/Publish - the user can deploy a .dacpac to a host server. When the deployment is done to an existing database, the difference between the database and the DAC is dynamically calculated and applied as an incremental update. The term "publish" is often used interchangeably with "deploy." For more information, see SqlPackage publish and Deploy a Data-tier Application.

These capabilities can be found in the SqlPackage CLI, SQL Server Management Studio, Azure Data Studio, and SQL Server Data Tools.

In addition to publish and extract, you can also track the database model in the system metadata by utilizing the dac registration functionality:

  • Register - the user can register a database as a data-tier application. Register stores a representation of the current state of the database schema in system metadata.
  • Unregister - a database previously registered as a DAC can be unregistered.
  • Upgrade - a database can be upgraded using a .dacpac.

Data-tier application tools

Tooling support for data-tier applications enables developers and database administrators to work with .dacpac and .bacpac files from both graphical and command line interfaces. In addition to released tools, data-tier application APIs are available in the Data-tier Application Framework (DACFx) for .NET development and database lifecycle customization.

DACPAC and BACPAC packages

The following tools support the .dacpac and .bacpac formats:

In these tools, a database can be extracted to a .dacpac or exported to a .bacpac. Conversely, a .bacpac can be imported into a new database or a .dacpac can be published to a new or existing database.

DACPAC and SQL projects

The following tools support the .dacpac file format in addition to providing editing of SQL database projects:

In these tools, developers can design a database in an unconnected, client-side development environment. Learn more in the SQL projects tools article.