Applicazioni livello datiData-tier Applications

Un'applicazione livello dati è un'entità logica di gestione dei database che definisce tutti gli oggetti SQL ServerSQL Server, ad esempio le tabelle, le viste e gli oggetti istanza, tra cui gli account di accesso, associati a un database dell'utente.A data-tier application (DAC) is a logical database management entity that defines all of the SQL ServerSQL Server objects - like tables, views, and instance objects, including logins – associated with a user’s database. Un'applicazione livello dati è un'unità indipendente della distribuzione di database di SQL ServerSQL Server che consente a sviluppatori di livello dati e ad amministratori di database di comprimere gli oggetti SQL ServerSQL Server in un elemento portabile chiamato pacchetto di applicazione livello dati, noto anche come DACPAC.A DAC is a self-contained unit of SQL ServerSQL Server database deployment that enables data-tier developers and database administrators to package SQL ServerSQL Server objects into a portable artifact called a DAC package, also known as a DACPAC.

Un BACPAC è un elemento correlato che incapsula lo schema del database e i dati archiviati nel database.A BACPAC is a related artifact that encapsulates the database schema as well as the data stored in the database.

Vantaggi delle applicazioni livello datiBenefits of Data-tier Applications

Il ciclo di vita della maggior parte delle applicazioni di database prevede che gli sviluppatori e gli amministratori di database condividano e scambino script e note di integrazione ad hoc per le attività di aggiornamento e manutenzione dell'applicazione.The lifecycle of most database applications involves developers and DBAs sharing and exchanging scripts and ad hoc integration notes for application update and maintenance activities. Mentre questo concetto è accettabile per un numero contenuto di database, diventa rapidamente non impiegabile se i database crescono in termini di numero, dimensione e complessità.While this is acceptable for a small number of databases, it quickly becomes unscalable once databases grow in number, size, and complexity.

Un'applicazione livello dati è uno strumento di produttività e gestione del ciclo di vita del database che offre allo sviluppo dichiarativo del database una distribuzione e una gestione semplificata.A DAC is a database lifecycle management and productivity tool that enables declarative database development to simplify deployment and management. Uno sviluppatore può creare un database in un progetto di database di SQL Server Data Tools, quindi compilare il database in un pacchetto di applicazione livello dati per passarlo a un amministratore di database.A developer can author a database in SQL Server Data Tool database project and then build the database into a DACPAC for handoff to a DBA. Con DBA è possibile distribuire l'applicazione livello dati tramite SQL Server Management Studio in un'istanza di test o di produzione di SQL ServerSQL Server o Database SQL di AzureAzure SQL Database.The DBA can deploy the DAC using SQL Server Management Studio to a test or production instance of SQL ServerSQL Server or Database SQL di AzureAzure SQL Database. In alternativa, l'amministratore di database può utilizzare il pacchetto di applicazione livello dati per aggiornare un database precedentemente distribuito tramite SQL Server Management Studio.Alternatively, the DBA can use the DACPAC to upgrade a previously deployed database using SQL Server Management Studio. Per completare il ciclo di vita, l'amministratore di database può estrarre il database in un pacchetto di applicazione livello dati e può passarlo a uno sviluppatore per riflettere rettifiche di test o produzione oppure per abilitare ulteriori modifiche di progettazione del database in risposta alle modifiche dell'applicazione.To complete the lifecycle, the DBA can extract the database into a DACPAC and hand it off to a developer to either reflect test or production adjustments, or to enable further database design changes in response to changes in the application.

Il vantaggio di una distribuzione guidata dall'applicazione livello dati rispetto a un esercizio controllato da script consiste nel fatto che lo strumento consente all'amministratore di database di identificare e convalidare i comportamenti da database di origine e destinazione diversi.The advantage of a DAC-driven deployment over a script driven exercise is that the tool helps the DBA with identifying and validating behaviors from different source and target databases. Durante gli aggiornamenti, lo strumento avverte l'amministratore di database nel caso in cui è possibile che si verifichi la perdita di dati e fornisce anche un piano di aggiornamento.During upgrades, the tool warns the DBA if the upgrade might cause data loss, and also provide an upgrade plan. L'amministratore di database può valutare il piano, quindi utilizzare lo strumento per procedere con l'aggiornamento.The DBA can evaluate the plan and then utilize the tool to proceed with the upgrade.

Le applicazioni livello dati inoltre supportano il controllo delle versioni per consentire allo sviluppatore e all'amministratore di database di mantenere e gestire la derivazione del database tramite il ciclo di vita.DAC’s also support versioning to help the developer and the DBA maintain and manage the database lineage through its lifecycle.

Concetti di applicazione livello datiDAC Concepts

Un'applicazione livello dati semplifica lo sviluppo, la distribuzione e la gestione degli elementi livello dati che supportano un'applicazione:A DAC simplifies the development, deployment, and management of data-tier elements that support an application:

  • Un'applicazione livello dati è un'entità logica di gestione dei database che definisce tutti gli oggetti di SQL Server, ad esempio le tabelle, le viste e gli oggetti istanza, associati a un database dell'utente.A data-tier application (DAC) is a logical database management entity that defines all SQL Server objects - such as tables, views, and instance objects – associated with a user’s database. È un'unità indipendente della distribuzione di database SQL Server che consente a sviluppatori di livello dati e ad amministratori di database di comprimere gli oggetti di SQL Server in un elemento portabile chiamato pacchetto di applicazione livello dati o file .dacpac.It is a self-contained unit of SQL Server database deployment that enables data-tier developers and DBAs to package SQL Server objects into a portable artifact called a DAC package, or .dacpac file.

  • Affinché venga trattato come un'applicazione livello dati, è necessario che un database SQL Server venga registrato in modo esplicito da un'operazione dell'utente o in modo implicito da una delle operazioni dell'applicazione livello dati.For a SQL Server database to be treated as a DAC, it must be registered – either explicitly by a user operation, or implicitly by one of the DAC operations. Quando un database viene registrato, la versione dell'applicazione livello dati e le altre proprietà vengono registrate nei metadati del database.When a database is registered, the DAC version and other properties are recorded as part of the metadata of the database. Viceversa, è possibile annullare la registrazione di un database e rimuovere le proprietà dell'applicazione livello dati.Conversely, a database can also be unregistered and have its DAC properties removed.

  • In generale, gli strumenti di applicazione livello dati sono in grado di leggere i file con estensione DACPAC generati dagli strumenti di applicazione livello dati delle versioni precedenti di SQL Server e di distribuire file DACPAC alle versioni precedenti di SQL Server.In general, DAC tools are capable of reading DACPAC files generated by DAC tools from previous SQL Server versions, and can also deploy DACPAC’s to previous versions of SQL Server. Tuttavia, gli strumenti di applicazione livello dati delle versioni precedenti non sono in grado di leggere i file con estensione DACPAC generati dagli strumenti di applicazioni livello dati delle versioni successive.However, DAC tools from earlier versions cannot read DACPAC files generated by DAC tools from later versions. In particolare:Specifically:

    • Le operazioni dell'applicazione livello dati sono state introdotte con SQL Server 2008 R2.DAC operations were introduced in SQL Server 2008 R2. Oltre ai database SQL Server 2008 R2, gli strumenti supportano la generazione di file con estensione DACPAC da database SQL Server 2008, SQL Server 2005 e SQL Server 2000.In addition to SQL Server 2008 R2 databases, the tools support generation of DACPAC files from SQL Server 2008, SQL Server 2005 and SQL Server 2000 databases.

    • Oltre ai database SQL 2016, gli strumenti forniti con SQL Server 2016 possono leggere i file con estensione DACPAC generati dagli strumenti di applicazione livello dati forniti con SQL Server 2008 R2 o SQL Server 2012.In addition to SQL 2016 databases, the tools shipped with SQL Server 2016 can read DACPAC files generated by DAC tools shipped with SQL Server 2008 R2 or SQL Server 2012. Sono inclusi i database di SQL Server 2014, 2012, 2008 R2, 2008 e 2005, ma non SQL Server 2000.This includes databases from SQL Server 2014, 2012, 2008 R2, 2008, and 2005, but not SQL Server 2000.

    • Gli strumenti di applicazione livello dati di SQL Server 2008 R2 non sono in grado di leggere i file con estensione DACPAC generati dagli strumenti di SQL Server 2012SQL Server 2012 o SQL Server 2016SQL Server 2016.DAC tools from SQL Server 2008 R2 cannot read DACPAC files generated by tools from SQL Server 2012SQL Server 2012 or SQL Server 2016SQL Server 2016.

  • Un pacchetto di applicazione livello dati è un file di Windows con l'estensione .dacpac.A DACPAC is a Windows file with a .dacpac extension. Il file supporta un formato aperto composto da più sezioni XML che rappresentano i dettagli dell'origine del pacchetto di livello dati, gli oggetti nel database e altre funzionalità.The file supports an open format consisting of multiple XML sections representing details of the DACPAC origin, the objects in the database, and other characteristics. Il file può essere decompresso da un utente avanzato tramite l'utilità DacUnpack.exe che viene fornita con il prodotto per controllare più da vicino ogni sezione.An advanced user can unpack the file using the DacUnpack.exe utility that ships with the product to inspect each section more closely.

  • L'utente deve essere membro del ruolo dbmanager o disporre delle autorizzazioni CREATE DATABASE per creare un database, compresa la creazione di un database tramite la distribuzione di un pacchetto di applicazione livello dati.The user must be a member of the dbmanager role or assigned CREATE DATABASE permissions to create a database, including creating a database by deploying a DAC package. L'utente deve essere membro del ruolo dbmanager o disporre delle autorizzazioni DROP DATABASE per eliminare un database.The user must be a member of the dbmanager role, or have been assigned DROP DATABASE permissions to drop a database.

Strumenti di applicazione livello datiDAC Tools

Un pacchetto di applicazione livello dati può essere perfettamente utilizzato in più strumenti forniti con SQL Server 2016SQL Server 2016.A DACPAC can be seamlessly used across multiple tools that ship with SQL Server 2016SQL Server 2016. Questi strumenti indirizzano i requisiti dei diversi tipi di utente utilizzando un pacchetto di applicazione livello dati come unità di interoperabilità.These tools address the requirements of different user personas using a DACPAC as the unit of interoperability.

  • Sviluppatori di applicazioni:Application Developers:

    • Possono usare un progetto di database SQL Server Data Tools per progettare un database.Can use a SQL Server Data Tools database project to design a database. Una corretta compilazione di questo progetto comporta la generazione di un pacchetto di applicazione livello dati contenuta in un file con estensione .dacpac.A successful build of this project results in the generation of a DACPAC contained in a .dacpac file.

    • Possono importare un pacchetto di applicazione livello dati in un progetto di database e continuare a progettare il database.Can import a DACPAC into a database project and continue to design the database.

SQL Server Data Tools supporta anche un Local DB per lo sviluppo di applicazioni di database client non connessi.SQL Server Data Tools also supports a Local DB for unconnected, client-side database application development. Lo sviluppatore può creare uno snapshot del database locale per creare pacchetto di applicazione livello dati contenuto in un file con estensione .dacpac.The developer can take a snapshot of this local database to create DACPAC contained in a .dacpac file.

-   <span data-ttu-id="8030c-147">Lo sviluppatore può pubblicare autonomamente un progetto di database direttamente in un database, senza generare un pacchetto di applicazione livello dati.</span><span class="sxs-lookup"><span data-stu-id="8030c-147">Independently, the developer can publish a database project directly to a database without even generating a DACPAC.</span></span> <span data-ttu-id="8030c-148">L'operazione di pubblicazione segue un comportamento simile all'operazione di distribuzione di altri strumenti.</span><span class="sxs-lookup"><span data-stu-id="8030c-148">The publish operation follows similar behavior as the deploy operation from other tools.</span></span>  
  • Amministratori di database:Database Administrators:

    • Possono usare SQL Server Management Studio per estrarre un pacchetto di applicazione livello dati da un database esistente ed eseguire altre operazioni dell'applicazione livello dati.Can use SQL Server Management Studio to extract a DACPAC from an existing database, and also perform other DAC operations.

    • Inoltre, l'amministratore di un database per Database SQLSQL Database può utilizzare il Portale di gestione per SQL Azure per le operazioni dell'applicazione livello dati.In addition, the DBA for a Database SQLSQL Database can use the Management Portal for SQL Azure for DAC operations.

  • Fornitori di software indipendenti:Independent Software Vendors:

    • I servizi di hosting e altri prodotti di gestione di dati per SQL Server sono in grado di utilizzare l'API DACFx per le operazioni dell'applicazione livello dati.Hosting services and other data management products for SQL Server can use the DACFx API for DAC operations.
  • Amministratori IT:IT Administrators:

    • Gli integratori di sistemi IT e gli amministratori IT possono utilizzare lo strumento riga di comando SqlPackage.exe per le operazioni dell'applicazione livello dati.IT systems integrators and administrators can use the SqlPackage.exe command line tool for DAC operations.

Operazioni dell'applicazione livello datiDAC Operations

Un'applicazione livello dati supporta le seguenti operazioni:A DAC supports the following operations:

  • EXTRACT: l'utente può estrarre un database in un file DACPAC.EXTRACT – the user can extract a database into a DACPAC.

  • DEPLOY: l'utente può distribuire un file DACPAC in un server host.DEPLOY – the user can deploy a DACPAC to a host server. Quando la distribuzione viene eseguita tramite uno strumento di gestione come SQL Server Management Studio o il Portale di gestione per SQL Azure, il database risultante nel server host viene registrato in modo implicito come applicazione livello dati.When the deployment is done from a manageability tool like SQL Server Management Studio or the Management Portal for SQL Azure, the resulting database in the host server is implicitly registered as a data-tier application.

  • REGISTER: l'utente può registrare un database come applicazione livello dati.REGISTER – the user can register a database as a data-tier application.

  • UNREGISTER: è possibile annullare la registrazione di un database registrato in precedenza come applicazione livello dati.UNREGISTER – a database previously registered as a DAC can be unregistered.

  • UPGRADE: è possibile aggiornare un database usando un file DACPAC.UPGRADE – a database can be upgraded using a DACPAC. L'aggiornamento è supportato anche su database non registrati in precedenza come applicazioni livello dati, ma come conseguenza dell'aggiornamento, il database verrà registrato in modo implicito.Upgrade is supported even on databases that are not previously registered as data-tier applications, but as a consequence of the upgrade, the database will be implicitly registered.

BACPACBACPAC

Un BACPAC è un file di Windows con l'estensione .bacpac che incapsula lo schema e i dati di un database.A BACPAC is a Windows file with a .bacpac extension that encapsulates a database's schema and data. L'uso primario di un file BACPAC riguarda lo spostamento di un database da un server a un altro o la migrazione di un database da un server locale al cloud e l'archiviazione di un database esistente in un formato aperto.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.

Analogamente a DACPAC, BACPAC è un formato di file aperto. Il contenuto dello schema del BACPAC è identico a quello del pacchetto di applicazione livello dati.Similar to the DACPAC, the BACPAC file format is open – the schema contents of the BACPAC are identical to that of the DACPAC. I dati in un file BACPAC sono archiviati nel formato JSON.The data in a BACPAC is stored in JSON format.

I pacchetti DACPAC e BACPAC sono simili, ma destinati a scenari diversi.DACPAC and BACPAC are similar but they target different scenarios. Un pacchetto di applicazione livello dati esegue l'acquisizione e la distribuzione dello schema, compreso l'aggiornamento del database esistente.A DACPAC is focused on capturing and deploying schema, including upgrading an existing database. L'uso primario di un pacchetto di applicazione livello dati consiste nella distribuzione di uno schema strettamente definito per gli ambienti di sviluppo, test e produzione.The primary use case for a DACPAC is to deploy a tightly defined schema to development, test, and then to production environments. E anche il contrario: l'acquisizione dello schema di produzione e la relativa applicazione agli ambienti di test e di sviluppo.And also the reverse: capturing production’s schema and applying it back to test and development environments.

Un BACPAC invece esegue l'acquisizione dello schema e dei dati a supporto di due operazioni principali:A BACPAC, on the other hand, is focused on capturing schema and data supporting two main operations:

  • EXPORT: l'utente può esportare lo schema e i dati di un database in un file BACPAC.EXPORT– The user can export the schema and the data of a database to a BACPAC.

  • IMPORT: l'utente può importare lo schema e i dati in un nuovo database nel server host.IMPORT – The user can import the schema and the data into a new database in the host server.

    Entrambe queste funzionalità sono supportate dagli strumenti di gestione di database SQL Server Management Studio, il Portale di Azure e l'API DACFx.Both these capabilities are supported by the database management tools: SQL Server Management Studio, the Azure Portal, and the DACFx API.

AutorizzazioniPermissions

L'utente deve essere membro del ruolo dbmanager o avere autorizzazioni CREATE DATABASE per creare un database, compresa la creazione di un database con la distribuzione di un pacchetto DAC.You must be a member of the dbmanager role or assigned CREATE DATABASE permissions to create a database, including creating a database by deploying a DAC package. L'utente deve essere membro del ruolo dbmanager o avere autorizzazioni DROP DATABASE per eliminare un database.You must be a member of the dbmanager role, or have been assigned DROP DATABASE permissions to drop a database.

Attività dell'applicazione livello datiData-tier Application Tasks

AttivitàTask Collegamento all'argomentoTopic Link
Viene descritto come utilizzare un file del pacchetto di applicazione livello dati per creare una nuova istanza di applicazione livello dati.Describes how to use a DAC package file to create a new DAC instance. Distribuire un'applicazione livello datiDeploy a Data-tier Application
Viene descritto come utilizzare un nuovo file del pacchetto di applicazione livello dati per aggiornare un'istanza alla nuova versione dell'applicazione livello dati.Describes how to use a new DAC package file to upgrade an instance to a new version of the DAC. Aggiornare un'applicazione livello datiUpgrade a Data-tier Application
Viene descritto come eliminare un'istanza di applicazione livello dati.Describes how to remove a DAC instance. È inoltre possibile scollegare o eliminare il database associato o lasciarlo intatto.You can choose to also detach or drop the associated database, or leave the database intact. Eliminare un'applicazione livello datiDelete a Data-tier Application
Viene descritto come visualizzare l'integrità dell'applicazione livello dati correntemente distribuita tramite Utilità SQL Server.Describes how to view the health of currently deployed DACs by using the SQL Server Utility. Monitorare le applicazioni livello datiMonitor Data-tier Applications
Viene descritto come creare un file .bacpac che contiene un archivio dei dati e dei metadati in un'applicazione livello dati.Describes how to create a .bacpac file that contains an archive of the data and metadata in a DAC. Esportare un'applicazione livello datiExport a Data-tier Application
Viene descritto come utilizzare un file di archivio dell'applicazione livello dati (estensione .bacpac) per eseguire un ripristino logico di un'applicazione livello dati o la migrazione dell'applicazione livello dati a un'altra istanza del Motore di databaseDatabase Engine o Database SQLSQL Database.Describes how to use a DAC archive file (.bacpac) to either perform a logical restore of a DAC, or to migrate the DAC to another instance of the Motore di databaseDatabase Engine or Database SQLSQL Database. Importare un file BACPAC per creare un nuovo database utenteImport a BACPAC File to Create a New User Database
Viene descritto come importare un file BACPAC per creare un nuovo database utente all'interno di un'istanza di SQL ServerSQL Server.Describes how to import a BACPAC file to create a new user database within an instance of SQL ServerSQL Server. Estrarre un'applicazione livello dati da un databaseExtract a DAC From a Database
Viene descritto come promuovere un database esistente trasformandolo in un'istanza di applicazione livello dati.Describes how to promote an existing database to be a DAC instance. Una definizione dell'applicazione livello dati viene compilata e archiviata nei database di sistema.A DAC definition is built and stored in the system databases. Registrare un database come applicazione livello datiRegister a Database As a DAC
Viene descritto come rivedere il contenuto di un pacchetto di applicazione livello dati e le azioni che un aggiornamento dell'applicazione livello dati eseguirà prima di utilizzare il pacchetto in un sistema di produzione.Describes how to review the contents of a DAC package and the actions a DAC upgrade will perform before using the package in a production system. Convalidare un pacchetto di applicazione livello datiValidate a DAC Package
Viene descritto come posizionare il contenuto di un pacchetto di applicazione livello dati in una cartella dove un amministratore di database può rivedere quello che l'applicazione livello dati fa prima di distribuirlo a un server di produzione.Describes how to place the contents of a DAC package into a folder where a database administrator can review what the DAC does before deploying it to a production server. Decomprimere un pacchetto di applicazione livello datiUnpack a DAC Package
Viene descritto come utilizzare una procedura guidata per distribuire un database esistente.Describes how to use a wizard to deploy an existing database. Nella procedura guidata vengono utilizzate applicazioni livello dati per effettuare la distribuzione.The wizard uses DACs to perform the deployment. Distribuire un database tramite un'applicazione livello datiDeploy a Database By Using a DAC

Vedere ancheSee also

Supporto dell'applicazione livello dati per oggetti e versioni di SQL ServerDAC Support For SQL Server Objects and Versions