Distribuire un'applicazione livello datiDeploy a Data-tier Application

È possibile distribuire un'applicazione livello dati (DAC) da un pacchetto di applicazione livello dati a un'istanza esistente del motore di database o del database SQL di Azure usando una procedura guidata o uno script di PowerShell.Deploy a data-tier application (DAC) from a DAC package to an existing instance of the database engine or Azure SQL Database using a wizard or a PowerShell script.

Il processo di distribuzione registra un'istanza di applicazione livello dati archiviando la definizione dell'applicazione livello dati nel database di sistema msdb (master in Database SQLSQL Database), crea un database e quindi lo popola con tutti gli oggetti di database definiti nell'applicazione livello dati.The deployment process registers a DAC instance by storing the DAC definition in the msdb system database (master in Database SQLSQL Database); creates a database, then populates that database with all the database objects defined in the DAC.

Distribuire più volte lo stesso pacchetto di applicazione livello datiDeploy the same DAC package multiple times

È possibile distribuire più volte lo stesso pacchetto di applicazione livello dati in una sola istanza del Motore di databaseDatabase Engine, ma le distribuzioni devono essere eseguite una alla volta.You can deploy the same DAC package to a single instance of the Motore di databaseDatabase Engine multiple times, but you must run the deployments one at a time. Il nome dell'istanza di applicazione livello dati specificato per ogni distribuzione deve essere univoco all'interno dell'istanza del Motore di databaseDatabase Engine.The DAC instance name specified for each deployment must be unique within the instance of the Motore di databaseDatabase Engine.

Istanze gestiteManaged instances

Se si distribuisce un'applicazione livello dati in un'istanza gestita del motore di database, l'applicazione livello dati distribuita viene incorporata in Utilità SQL Server al successivo invio del set di raccolta dell'utilità dall'istanza al punto di controllo dell'utilità.If you deploy a DAC to a managed instance of the Database Engine, the deployed DAC is incorporated into the SQL Server Utility the next time the utility collection set is sent from the instance to the utility control point. L'applicazione livello dati sarà quindi presente nel nodo Deployed Data-tier Applications (Applicazioni livello dati distribuite) in Management StudioManagement Studio Utility Explorer and reported in the Deployed Data-tier Applications details page.The DAC will then be present in the Deployed Data-tier Applications node of the Management StudioManagement Studio Utility Explorer and reported in the Deployed Data-tier Applications details page.

Opzioni e impostazioni del databaseDatabase Options and Settings

Per impostazione predefinita, il database creato durante la distribuzione disporrà di tutte le impostazioni predefinite incluse nell'istruzione CREATE DATABASE, fatta eccezione per le seguenti:By default, the database created during the deployment will have all of the default settings from the CREATE DATABASE statement, except:

  • Le regole di confronto e il livello di compatibilità del database sono impostati sui valori definiti nel pacchetto di applicazione livello dati.The database collation and compatibility level are set to the values defined in the DAC package. I pacchetti di applicazione livello dati compilati da un progetto di database in SQL Server Developer Tools usano i valori impostati nel progetto di database.A DAC package built from a database project in the SQL Server Developer Tools uses the values set in the database project. I pacchetti estratti da un database esistente usano i valori del database originale.A package extracted from an existing database uses the values from the original database.

  • È possibile modificare alcune delle impostazioni del database, ad esempio il nome del database e i percorsi di file, nella pagina Aggiorna configurazione .You can adjust some of the database settings, such as database name and file paths, in the Update Configuration page. Non è possibile impostare i percorsi dei file durante la distribuzione in Database SQLSQL Database.You cannot set the file paths when deploying to Database SQLSQL Database.

    Alcune opzioni del database, ad esempio TRUSTWORTHY, DB_CHAINING e HONOR_BROKER_PRIORITY, non possono essere modificate durante il processo di distribuzione.Some database options, such as TRUSTWORTHY, DB_CHAINING, and HONOR_BROKER_PRIORITY, cannot be adjusted as part of the deployment process. Le proprietà fisiche, ad esempio il numero di filegroup o i numeri e le dimensioni dei file, non possono essere modificate durante il processo di distribuzione.Physical properties, such as the number of filegroups, or the numbers and sizes of files cannot be altered as part of the deployment process. Al termine della distribuzione, è possibile usare l'istruzione ALTER DATABASE, SQL Server Management StudioSQL Server Management Studioo SQL ServerSQL Server PowerShell per modificare il database in base alle proprie esigenze.After the deployment completes, you can use the ALTER DATABASE statement, SQL Server Management StudioSQL Server Management Studio, or SQL ServerSQL Server PowerShell to tailor the database.

Limitazioni e restrizioniLimitations and restrictions

È possibile distribuire un'applicazione livello dati a Database SQLSQL Database, o un'istanza del Motore di databaseDatabase Engine che esegue SQL Server 2005SQL Server 2005 Service Pack 4 (SP4) o versioni successive.A DAC can be deployed to Database SQLSQL Database, or an instance of the Motore di databaseDatabase Engine running SQL Server 2005SQL Server 2005 Service Pack 4 (SP4) or later. Se si crea un'applicazione livello dati usando una versione successiva, è possibile che nell'applicazione in questione siano contenuti oggetti non supportati da SQL Server 2005SQL Server 2005.If you create a DAC using a later version, the DAC may contain objects not supported by SQL Server 2005SQL Server 2005. Non è possibile distribuire tali applicazioni livello dati a istanze di SQL Server 2005SQL Server 2005.You cannot deploy those DACs to instances of SQL Server 2005SQL Server 2005.

Sicurezza e autorizzazioniSecurity and permissions

Gli account di accesso dell'autenticazione vengono archiviati in un pacchetto di applicazione livello dati senza password.Authentication logins are stored in a DAC package without a password. Quando il pacchetto viene distribuito o aggiornato, l'account di accesso viene creato come account disabilitato con una password generata.When the package is deployed or upgraded, the login is created as a disabled login with a generated password. Per abilitare gli account di accesso, è necessario accedere usando un account con l'autorizzazione ALTER ANY LOGIN e usare ALTER LOGIN per abilitare l'account di accesso e assegnare una nuova password che può essere comunicata all'utente.To enable the logins, log in using a login with the ALTER ANY LOGIN permission and use ALTER LOGIN to enable the login and assign a new password that can be communicated to the user. Questa operazione non è necessaria per gli account di accesso dell'autenticazione di Windows, in quanto le relative password non sono gestite da SQL Server.This is not required for Windows Authentication logins because their passwords are not managed by SQL Server.

Un'applicazione livello dati può essere distribuita unicamente dai membri del ruolo predefinito del server sysadmin o serveradmin oppure tramite gli account di accesso disponibili nel ruolo predefinito del server dbcreator con autorizzazioni ALTER ANY LOGIN.A DAC can only be deployed by members of the sysadmin or serveradmin fixed server roles, or by logins in the dbcreator fixed server role with ALTER ANY LOGIN permissions. È anche possibile distribuire un'applicazione livello dati usando l'account amministratore di sistema di SQL ServerSQL Server predefinito denominato sa .The built-in SQL ServerSQL Server system administrator account named sa can also deploy a DAC.

La distribuzione di un'applicazione livello dati con accessi in Database SQLSQL Database richiede l'appartenenza ai ruoli loginmanager o serveradmin.Deploying a DAC with logins to Database SQLSQL Database requires membership in the loginmanager or serveradmin roles. Per la distribuzione di un'applicazione livello dati senza account di accesso in Database SQLSQL Database è richiesta l'appartenenza ai ruoli dbmanager o serveradmin.Deploying a DAC without logins to Database SQLSQL Database requires membership in the dbmanager or serveradmin roles.

Distribuire un'applicazione livello dati tramite una procedura guidataDeploy a DAC using the wizard

  1. In Esplora oggettiespandere il nodo per le istanze a cui si desidera distribuire l'applicazione livello dati.In Object Explorer, expand the node for the instance to which you want to deploy the DAC.

  2. Fare clic con il pulsante destro del mouse sul nodo Database e quindi scegliere Distribuisci applicazione livello datiRight-click the Databases node, then select Deploy Data-tier Application…

  3. Completare le finestre di dialogo della procedura guidata e fare clic su Fine.Complete the wizard dialogs and click finish. Di seguito sono disponibili altre informazioni su alcune delle pagine della procedura guidata:More about some of the wizard pages below:

Pagina Selezione pacchetto di applicazione livello datiSelect DAC Package Page

Specificare il pacchetto di applicazione livello dati contenente l'applicazione livello dati da distribuire.Specify the DAC package that contains the data-tier application to be deployed. La pagina passa attraverso tre stati.The page transitions through three states.

Selezionare pacchetto di applicazione livello datiSelect the DAC Package

Scegliere il pacchetto di applicazione livello dati da distribuire.Choose the DAC package to deploy. È necessario specificare un file di pacchetto di applicazione livello dati valido con estensione dacpac.The DAC package must be a valid DAC package file and must have a .dacpac extension.

Pacchetto di applicazione livello dati : consente di specificare il percorso e il nome file del pacchetto di applicazione livello dati contenente l'applicazione livello dati da distribuire.DAC Package - Specify the path and file name of the DAC package that contains the data-tier application to be deployed. Per passare al percorso del pacchetto di applicazione livello dati, è possibile fare clic sul pulsante Sfoglia a destra della casella.You can select the Browse button at the right of the box to browse to the location of the DAC package.

Nome applicazione casella di sola lettura in cui viene visualizzato il nome dell'applicazione livello dati assegnato durante la creazione o l'estrazione dell'applicazione livello dati da un database.Application Name - A read-only box that displays the DAC name assigned when the DAC was authored or extracted from a database.

Versione casella di sola lettura in cui viene visualizzata la versione assegnata durante la creazione o l'estrazione dell'applicazione livello dati da un database.Version - A read-only box that displays the version assigned when the DAC was authored or extracted from a database.

Descrizione : casella di sola lettura in cui viene visualizzata la descrizione immessa durante la creazione o l'estrazione dell'applicazione livello dati da un database.Description - A read-only box that displays the description written when the DAC was authored or extracted from a database.

Convalida del pacchetto di applicazione livello datiValidating the DAC Package

Viene visualizzato un indicatore di stato per la verifica della validità del file selezionato come pacchetto di applicazione livello dati.Displays a progress bar as the wizard confirms that the selected file is a valid DAC package. Se il pacchetto di applicazione livello dati viene convalidato, la procedura guidata continua con la versione finale della pagina Seleziona pacchetto in cui è possibile controllare il risultato della convalida.If the DAC package is validated, the wizard proceeds to the final version of the Select Package page where you can review the results of the validation. Se il file non è un pacchetto di applicazione livello dati valido, rimane visualizzata la pagina Selezione pacchetto di applicazione livello dati.If the file is not a valid DAC package, the wizard remains on the Select DAC Package. Selezionare un altro pacchetto di applicazione livello dati valido o annullare la procedura guidata e generare un nuovo pacchetto di applicazione livello dati.Either select another valid DAC package or cancel the wizard and generate a new DAC package.

Pagina Verifica criteriReview Policy Page

Controllare i risultati della valutazione degli eventuali criteri di selezione dei server dell'applicazione livello dati.Review the results of evaluating the DAC server selection policy (if used). I criteri di selezione dei server del pacchetto di applicazione livello dati sono facoltativi e sono assegnati al pacchetto di applicazione livello dati quando viene creato in Visual Studio.The DAC server selection policy is optional, and is assigned to the DAC when it is created in Visual Studio. I facet dei criteri di selezione dei server vengono usati per specificare le condizioni che un'istanza del Motore di databaseDatabase Engine deve soddisfare per ospitare il pacchetto DAC.The policy uses the server selection policy facets to specify conditions an instance of the Motore di databaseDatabase Engine should meet to host the DAC.

Risultati della valutazione delle condizioni dei criteri: indica se le condizioni dei criteri di distribuzione dell'applicazione livello dati sono soddisfatte.Evaluation results of policy conditions - Shows whether the DAC deployment policy conditions succeeded. I risultati della valutazione di ogni condizione sono riportati in una riga distinta.The results of evaluating each condition are reported on a separate line.

I criteri di selezione dei server riportati di seguito vengono valutati sempre come falsi durante la distribuzione di un'applicazione livello dati a Database SQLSQL Database: versione del sistema operativo, lingua, Named Pipes abilitato, piattaforma e tcp abilitato.The following server selection policies always evaluate to false when deploying a DAC to Database SQLSQL Database: operating system version, language, named pipes enabled, platform, and tcp enabled.

Ignora le violazioni dei criteri : usare questa casella di controllo per continuare la distribuzione se una o più delle condizioni dei criteri non sono soddisfatte.Ignore policy violations - Use this check box to proceed with the deployment if one or more of the policy conditions failed. Selezionare questa opzione solo se si è sicuri che tutte le condizioni non soddisfatte non impediranno la distribuzione del pacchetto DAC.Only select this option if you are sure that all of the conditions which failed will not prevent the successful operation of the DAC.

Pagina Aggiorna configurazioneUpdate Configuration Page

Specificare i nomi dell'istanza di applicazione livello dati distribuita e del database creato dalla distribuzione e impostare le opzioni del database.Specify the names of the deployed DAC instance and the database created by the deployment, and to set database options.

Nome database : consente di specificare il nome del database da creare con la distribuzione.Database Name: - Specify the name of the database to be created by the deployment. Il nome predefinito corrisponde al nome del database di origine da cui è stato estratto il pacchetto di applicazione livello dati.The default is the name of the source database the DAC was extracted from. Il nome deve essere univoco all'interno dell'istanza del Motore di databaseDatabase Engine ed essere conforme alle regole per gli identificatori del Motore di databaseDatabase Engine .The name must be unique within the instance of the Motore di databaseDatabase Engine and comply with the rules for Motore di databaseDatabase Engine identifiers.

Se si modifica il nome del database, i nomi del file di dati e del file di log verranno modificati in modo da corrispondere al nuovo valore.If you change the database name, the names of the data file and log files will change to match the new value.

Il nome del database viene inoltre usato come nome dell'istanza di applicazione livello dati.The database name is also used as the name of the DAC instance. Il nome dell'istanza è visualizzato nel nodo dell'applicazione livello dati, nel nodo Applicazioni livello dati in Esplora oggettio nel nodo Deployed Data-tier Applications (Applicazioni livello dati distribuite) in Esplora utilità.The instance name is displayed on the node for the DAC under the Data-tier Applications node in Object Explorer, or the Deployed Data-tier Applications node in the Utility Explorer.

Le opzioni seguenti non si applicano a Database SQLSQL Databasee non vengono visualizzate in caso di distribuzione in Database SQLSQL Database.The following options do not apply to Database SQLSQL Database, and are not displayed when deploying to Database SQLSQL Database.

Usa percorso predefinito file di database : selezionare questa opzione per creare i file di dati e di log del database nel percorso predefinito per l'istanza di Motore di databaseDatabase Engine.Use the default database location - Select this option to create the database data and log files in the default location for the instance of the Motore di databaseDatabase Engine. I nomi dei file saranno creati usando il nome del database.The file names will be built using the database name.

Specifica file di database : selezionare questa opzione per specificare un percorso o un nome diverso per i file di dati e di log.Specify database files - Select this option to specify a different location or name for the data and log files.

Percorso e nome file di dati : consente di specificare il percorso completo e il nome del file di dati.Data file path and name: - Specify the full path and file name for the data file. La casella viene popolata con il percorso e il nome file predefiniti.The box is populated with the default path and file name. Modificare la stringa nella casella per modificare l'impostazione predefinita oppure usare il pulsante Sfoglia per passare alla cartella in cui si desidera salvare il file di dati.Edit the string in the box to change the default, or use the Browse button to navigate to the folder where the data file is to be placed.

Percorso e nome file di log : consente di specificare il percorso completo e il nome del file di log.Log file path and name: - Specify the full path and file name for the log file. La casella viene popolata con il percorso e il nome file predefiniti.The box is populated with the default path and file name. Modificare la stringa nella casella per modificare l'impostazione predefinita oppure usare il pulsante Sfoglia per passare alla cartella in cui si desidera salvare il file di log.Edit the string in the box to change the default, or use the Browse button to navigate to the folder where the log file is to be placed.

Pagina Riepilogo Summary Page

Usare questa pagina per controllare le azioni che verranno eseguite dalla procedura guidata durante la distribuzione del pacchetto di applicazione livello dati.Use this page to review the actions the wizard will take when deploying the DAC.

Le impostazioni seguenti saranno usate per implementare l'applicazione livello dati.The following settings will be used to deploy your DAC. Controllare le informazioni visualizzate per assicurarsi che le azioni che verranno eseguite siano corrette.- Review the information displayed to ensure the actions taken will be correct. Nella finestra viene visualizzato il pacchetto di applicazione livello dati selezionato e il nome selezionato per l'istanza di applicazione livello dati distribuita.The window displays the DAC package you selected, and the name you selected for the deployed DAC instance. Nella finestra vengono inoltre visualizzate le impostazioni che verranno usate durante la creazione del database associato al pacchetto di applicazione livello dati.The window also displays the settings that will be used when creating the database associated with the DAC.

Pagina DistribuisciDeploy Page

In questa pagina viene segnalato l'esito positivo o negativo dell'operazione di distribuzione.This page reports the success or failure of the deploy operation.

Distribuzione dell'applicazione livello dati : consente di visualizzare l'esito positivo o negativo di ogni azione eseguita per distribuire l'applicazione livello dati.Deploying the DAC - Reports the success or failure of each action taken to deploy the DAC. Verificare le informazioni che determinano l'esito positivo o negativo di ciascuna azione.Review the information to determine the success or failure of each action. Ogni azione che ha rilevato un errore avrà un collegamento nella colonna Risultato .Any action that encountered an error will have a link in the Result column. Selezionare il collegamento per visualizzare un report dell'errore per l'azione.Select the link to view a report of the error for that action.

Salva report : consente di salvare il report della distribuzione come file HTML.Save Report - Select this button to save the deployment report to an HTML file. Nel file viene riportato lo stato di ogni azione, inclusi tutti gli errori generati da qualsiasi azione.The file reports the status of each action, including all errors generated by any of the actions. La cartella predefinita è la cartella SQL Server Management Studio\DAC Packages contenuta nella cartella Documenti dell'account di Windows.The default folder is the SQL Server Management Studio\DAC Packages folder in the Documents folder of your Windows account.

Distribuire un'applicazione livello dati con PowerShellDeploy a DAC using PowerShell

  1. Creare un oggetto server SMO e impostarlo sull'istanza a cui distribuire l'applicazione livello dati.Create a SMO Server object and set it to the instance to which you want to deploy the DAC.

  2. Aprire un oggetto ServerConnection e connetterlo alla stessa istanza.Open a ServerConnection object and connect to the same instance.

  3. Usare System.IO.File per caricare il file del pacchetto di applicazione livello dati.Use System.IO.File to load the DAC package file.

  4. Usare add_DacActionStarted e add_DacActionFinished per sottoscrivere gli eventi di distribuzione dell'applicazione livello dati.Use add_DacActionStarted and add_DacActionFinished to subscribe to the DAC deployment events.

  5. Impostare DatabaseDeploymentProperties.Set the DatabaseDeploymentProperties.

  6. Usare il metodo DacStore.Install per distribuire l'applicazione livello dati.Use the DacStore.Install method to deploy the DAC.

  7. Chiudere il flusso di file usato per leggere il file del pacchetto di applicazione livello dati.Close the file stream used to read the DAC package file.

Esempi di PowerShellPowerShell examples

Nel seguente esempio viene distribuita un'applicazione livello dati denominata MyApplication su un'istanza predefinita del Motore di databaseDatabase Engine, usando una definizione dell'applicazione livello dati in un pacchetto MyApplication.dacpac.The following example deploys a DAC named MyApplication on a default instance of the Motore di databaseDatabase Engine, using a DAC definition from a MyApplication.dacpac package.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  

## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  

## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  

## Subscribe to the DAC deployment events.  
$dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})  
$dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})  

## Deploy the DAC and create the database.  
$dacName  = "MyApplication"  
$evaluateTSPolicy = $true  
$deployProperties = New-Object Microsoft.SqlServer.Management.Dac.DatabaseDeploymentProperties($serverconnection,$dacName)  
$dacstore.Install($dacType, $deployProperties, $evaluateTSPolicy)  
$fileStream.Close()  

Ulteriori informazioniMore information

Applicazioni livello dati Data-tier Applications
Estrarre un'applicazione livello dati da un database Extract a DAC From a Database
Identificatori del database Database Identifiers