Convalida di un pacchetto di applicazioni livello datiValidate a DAC Package

È consigliabile esaminare il contenuto di un pacchetto di un'applicazione livello dati prima di distribuirlo nella produzione nonché convalidare le azioni di aggiornamento prima di aggiornare un'applicazione livello dati esistente,It is a good practice to review the contents of a DAC package before deploying it in production, and to validate the upgrade actions before upgrading an existing DAC. in particolare nel caso in cui si distribuiscano pacchetti non sviluppati dalla propria organizzazione.This is especially true when deploying packages that were not developed in your organization.

  1. Prima di iniziare: PrerequisitiBefore you begin: Prerequisites

  2. Per aggiornare un'applicazione livello dati, utilizzare: Visualizza il contenuto di un'applicazione livello dati, Visualizza modifiche al database, Visualizza azioni di aggiornamento, Compare DACsTo upgrade a DAC, using: View the Contents of a DAC, View Database Changes, View Upgrade Actions, Compare DACs

Prerequisiti Prerequisites

È consigliabile evitare di distribuire un pacchetto di applicazione livello dati proveniente da origini sconosciute o non attendibili.We recommend that you do not deploy a DAC package from unknown or untrusted sources. Tali pacchetti DAC possono contenere codice dannoso che potrebbe eseguire codice Transact-SQLTransact-SQL indesiderato o causare errori modificando lo schema.Such DACs could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema. Prima di usare un'applicazione livello dati proveniente da un'origine sconosciuta o non attendibile, distribuirla in un'istanza di test isolata del Motore di databaseDatabase Engine, eseguire DBCC CHECKDB (Transact-SQL) sul database ed esaminare anche il codice nel database, ad esempio stored procedure o altro codice definito dall'utente.Before you use a DAC from an unknown or untrusted source, deploy it on an isolated test instance of the Motore di databaseDatabase Engine, run DBCC CHECKDB (Transact-SQL) on the database, and also examine the code, such as stored procedures or other user-defined code, in the database.

Visualizza il contenuto di un'applicazione livello dati View the Contents of a DAC

Sono disponibili due meccanismi per la visualizzazione del contenuto di un pacchetto di applicazione livello dati (DAC).There are two mechanisms for viewing the contents of a data-tier application (DAC) package. È possibile importare il pacchetto di applicazione livello dati in un progetto di applicazione livello dati in SQL Server Developer Tools.You can import the DAC package to a DAC project in SQL Server Developer Tools. In alternativa, è possibile decomprimere il contenuto del pacchetto in una cartella.You can unpack the contents of the package to a folder.

Visualizzare un'applicazione livello dati in SQL Server Developer ToolsView a DAC in SQL Server Developer Tools

  1. Aprire il menu File , selezionare Nuovo, quindi selezionare Progetto….Open the File menu, select New, and then select Project….

  2. Selezionare il modello di progetto di SQL Server e specificare un Nome, una Percorsoe un Nome soluzione.Select the SQL Server project template, and specify a Name, Location, and Solution name.

  3. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nodo del progetto e selezionare Proprietà….In Solution Explorer, right click the project node and select Properties….

  4. Nella scheda Impostazioni progetto selezionare la casella di controllo Applicazione livello dati (file .dacpac) nella sezione Tipi di output e quindi chiudere la finestra di dialogo delle proprietà.On the Project Settings tab, in the Output Types section, select the Data-tier Application (.dacpac File) check box, and then close the properties dialog.

  5. In Esplora soluzionifare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Importa applicazione livello dati.In Solution Explorer, right click the project node and select Import Data-tier Application….

  6. Usare Esplora soluzioni per aprire tutti i file dell'applicazione livello dati, ad esempio i criteri di selezione dei server e gli script pre-distribuzione e post-distribuzione.Use Solution Explorer to open all of the files in the DAC, such as the server selection policy and the pre- and post-deployment scripts.

  7. Utilizzare Visualizzazione schema per controllare tutti gli oggetti nello schema, rivedendo in particolare il codice di oggetti quali funzioni o stored procedure.Use the Schema View to review all of the objects in the schema, particularly reviewing the code in objects such as functions or stored procedures.

    Visualizzare un'applicazione livello dati in una cartellaView a DAC in a Folder

  • decomprimere il pacchetto di applicazione livello dati in una cartella seguendo le istruzioni riportate in Unpack a DAC Package.Unpack the DAC package into a folder by following the instructions in Unpack a DAC Package.

  • Visualizzare il contenuto degli script Transact-SQLTransact-SQL aprendoli nell'Editor di query Motore di databaseDatabase Engine in Management StudioManagement Studio.View the contents of the Transact-SQLTransact-SQL scripts by opening them in the Motore di databaseDatabase Engine Query Editor in Management StudioManagement Studio.

  • Visualizzare il contenuto dei file di testo negli strumenti quale Blocco note.View the contents of the text files in tools such as notepad.

Visualizza modifiche al database View Database Changes

Dopo che la versione corrente di un'applicazione livello dati è distribuita a produzione, è possibile che le modifiche siano state apportate direttamente al database associato che potrebbe creare conflitti con lo schema definito in una nuova versione dell'applicazione livello dati.After the current version of a DAC was deployed to production, changes may have been made directly to the associated database that might conflict with the schema defined in a new version of the DAC. Prima di aggiornare a una nuova versione dell'applicazione livello dati, controllare per vedere se tali modifiche sono state apportate al database.Before upgrading to a new version of the DAC, check to see if such changes have been made to the database.

Visualizzare modifiche al Database tramite una procedura guidataView Database Changes by Using a Wizard

  1. Eseguire la procedura guidata Aggiorna applicazione livello dati , specificare l'applicazione livello dati attualmente distribuita e il pacchetto di applicazione livello dati contenente la nuova versione dell'applicazione stessa.Run the Upgrade Data-tier Application wizard, specifying the currently deployed DAC and the DAC package containing the new version of the DAC.

  2. Nella pagina Rileva modifiche , esaminare il report delle modifiche apportate al database.On the Detect Change page, review the report of the changes that have been made to the database.

  3. Selezionare Annulla se non si desidera proseguire con l'aggiornamento.Select Cancel if you do not want to continue with the upgrade.

  4. Per altre informazioni sull'uso della procedura guidata, vedere Aggiornare un'applicazione livello dati.For more information on using the wizard, see Upgrade a Data-tier Application.

    Visualizzare modifiche al database tramite PowerShellView Database Changes by Using PowerShell

  5. Creare un oggetto server SMO e impostarlo sull'istanza contenente l'applicazione livello dati da visualizzare.Create a SMO Server object and set it to the instance that contains the DAC to be viewed.

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

  7. Specificare il nome dell'applicazione livello dati in una variabile.Specify the DAC name in a variable.

  8. Usare il metodo GetDatabaseChanges() per recuperare un oggetto ChangeResults e inoltrare tramite pipe l'oggetto a un file di testo per generare un report semplice degli oggetti nuovi, eliminati e modificati.Use the GetDatabaseChanges() method to retrieve a ChangeResults object, and pipe the object to a text file to generate a simple report of new, deleted, and changed objects.

Visualizzare esempio di modifiche al database (PowerShell)View Database Changes Example (PowerShell)

Visualizzare esempio di modifiche al database (PowerShell)View Database Changes Example (PowerShell)

Nell'esempio seguente vengono segnalate eventuali modifiche apportate al database in un'applicazione livello dati distribuita denominata MyApplicaiton.The following example reports any database changes that have been made in a deployed DAC named MyApplicaiton.

## 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)  

## Specify the DAC instance name.  
$dacName  = "MyApplication"  

## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

Visualizza azioni di aggiornamento View Upgrade Actions

Prima di utilizzare una nuova versione di un pacchetto di applicazione livello dati per aggiornare un'applicazione livello dati distribuita da un pacchetto di applicazione livello dati precedente, è possibile generare un report in cui sono contenute le istruzioni Transact-SQLTransact-SQL che verranno eseguite durante l'aggiornamento, quindi controllare le istruzioni.Before using a new version of a DAC package to upgrade a DAC that was deployed from an earlier DAC package, you can generate a report that contains the Transact-SQLTransact-SQL statements that will be run during the upgrade, and then review the statements.

Segnalare azioni di aggiornamento tramite una procedura guidataReport Upgrade Actions by Using a Wizard

  1. Eseguire la procedura guidata Aggiorna applicazione livello dati , specificare l'applicazione livello dati attualmente distribuita e il pacchetto di applicazione livello dati contenente la nuova versione dell'applicazione stessa.Run the Upgrade Data-tier Application wizard, specifying the currently deployed DAC and the DAC package containing the new version of the DAC.

  2. Nella pagina Riepilogo , esaminare il report delle azioni di aggiornamento.On the Summary page, review the report of the upgrade actions.

  3. Selezionare Annulla se non si desidera proseguire con l'aggiornamento.Select Cancel if you do not want to continue with the upgrade.

  4. Per altre informazioni sull'uso della procedura guidata, vedere Aggiornare un'applicazione livello dati.For more information on using the wizard, see Upgrade a Data-tier Application.

    Segnalare azioni di aggiornamento tramite PowerShellReport Upgrade Actions by Using PowerShell

  5. Creare un oggetto server SMO e impostarlo sull'istanza contenente l'applicazione livello dati distribuita.Create a SMO Server object and set it to the instance that contains the deployed DAC.

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

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

  8. Specificare il nome dell'applicazione livello dati in una variabile.Specify the DAC name in a variable.

  9. Usare il metodo GetIncrementalUpgradeScript() per ottenere un elenco delle istruzioni Transact-SQL che verrebbero eseguite durante un aggiornamento e inoltrare tramite pipe l'elenco a un file di testo.Use the GetIncrementalUpgradeScript() method to get a list of the Transact-SQL statements an upgrade would run, and pipe the list to a text file.

  10. 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.

Visualizzare esempio di azioni di aggiornamento (PowerShell)View Upgrade Actions Example (PowerShell)

Visualizzare esempio di azioni di aggiornamento (PowerShell)View Upgrade Actions Example (PowerShell)

L'esempio seguente illustra le istruzioni Transact-SQL da eseguire per aggiornare un'applicazione livello dati denominata MyApplication allo schema definito in un file MyApplication2017.dacpac.The following example reports the Transact-SQL statements that would be run to upgrading a DAC named MyApplicaiton to the schema defined in a MyApplication2017.dacpac file.

## 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\MyApplication2017.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  

## Specify the DAC instance name.  
$dacName  = "MyApplication"  

## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  

## Close the filestream to the new DAC package.  
$fileStream.Close()  

Compare DACs Compare DACs

Prima di aggiornare un'applicazione del livello dati, è consigliabile controllare le differenze nel database e negli oggetti a livello di istanza tra il pacchetto di applicazioni livello dati corrente e quello nuovo.Before upgrading a DAC, it is a good practice to review the differences in the database and instance-level objects between the current and new DACs. Se non si dispone di una copia del pacchetto di applicazione livello dati corrente, è possibile estrarre un pacchetto dal database corrente.If you do not have a copy of the package for the current DAC, you can extract a package from the current database.

Se si importano entrambi i pacchetti di applicazione livello dati nei progetti di applicazione livello dati in SQL Server Developer Tools, è possibile utilizzare lo strumento di Confronto schema per analizzare le differenze tra i due pacchetti di applicazioni livello dati.If you import both DAC packages into DAC projects in SQL Server Developer Tools, you can use the Schema Compare tool to analyze the differences between the two DACs.

In alternativa, decomprimere le applicazioni livello dati in cartelle separate.Alternatively, unpack the DACs into separate folders. È possibile quindi utilizzare uno strumento delle differenze, quale l'utilità WinDiff, per analizzare le differenze.You can then use a difference tool, such as the WinDiff utility, to analyze the differences.

Vedere ancheSee Also

Applicazioni livello dati Data-tier Applications
Distribuire un'applicazione livello dati Deploy a Data-tier Application
Aggiornare un'applicazione livello datiUpgrade a Data-tier Application