Share via


Convalida di un pacchetto di applicazioni livello dati

È 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, in particolare nel caso in cui si distribuiscano pacchetti non sviluppati dalla propria organizzazione.

  1. Prima di iniziare: prerequisiti

  2. Per aggiornare un'applicazione livello dati, utilizzare: Visualizza il contenuto di un'applicazione livello dati, Visualizza modifiche al database, Visualizza azioni di aggiornamento, Confronta applicazioni livello dati

Prerequisiti

È consigliabile evitare di distribuire un pacchetto di applicazione livello dati proveniente da origini sconosciute o non attendibili. Tali pacchetti DAC possono contenere codice dannoso che potrebbe eseguire codice Transact-SQL indesiderato o causare errori modificando lo schema. Prima di utilizzare un'applicazione livello dati proveniente da un'origine sconosciuta o non attendibile, distribuirla in un'istanza di prova isolata di Motore di database, eseguire DBCC CHECKDB (Transact-SQL) nel database ed esaminare inoltre il codice, come ad esempio stored procedure o altro codice definito dall'utente, nel database.

[Torna all'inizio]

Visualizzare il contenuto di un'applicazione livello dati

Sono disponibili due meccanismi per la visualizzazione del contenuto di un pacchetto di applicazione livello dati (DAC). È possibile importare il pacchetto di applicazione livello dati in un progetto di applicazione livello dati in SQL Server Developer Tools. In alternativa, è possibile decomprimere il contenuto del pacchetto in una cartella.

Visualizzare un'applicazione livello dati in SQL Server Developer Tools

  1. Aprire il menu File, selezionare Nuovo, quindi selezionare Progetto….

  2. Selezionare il modello di progetto di SQL Server e specificare un Nome, una Percorso e un Nome soluzione.

  3. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nodo del progetto e selezionare Proprietà….

  4. Nella scheda Impostazioni progetto, nella sezione Tipi di output selezionare la casella di controllo Applicazione livello dati (File .dacpac), quindi chiudere la finestra di dialogo delle proprietà.

  5. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nodo del progetto e selezionare Importa applicazione di livello dati….

  6. Utilizzare Esplora soluzioni per aprire tutti i file del pacchetto applicazione livello dati, quali i criteri di selezione dei server e gli script dei pre-distribuzione e post-distribuzione.

  7. Utilizzare Visualizzazione schema per controllare tutti gli oggetti nello schema, rivedendo in particolare il codice di oggetti quali funzioni o stored procedure.

[Torna all'inizio]

Visualizzare un'applicazione livello dati in una cartella

  • decomprimere il pacchetto di applicazione livello dati in una cartella seguendo le istruzioni riportate in Decompressione di un pacchetto di applicazione livello dati.

  • Visualizzare il contenuto degli script Transact-SQL aprendoli nell'Editor di query Motore di database in Management Studio.

  • Visualizzare il contenuto dei file di testo negli strumenti quale Blocco note.

[Torna all'inizio]

Visualizzare modifiche al database

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. Prima di aggiornare a una nuova versione dell'applicazione livello dati, controllare per vedere se tali modifiche sono state apportate al database.

Visualizzare modifiche al Database tramite una procedura guidata

  1. Eseguire l'aggiornamento guidato dell'applicazione livello dati, specificare l'applicazione livello dati correntemente distribuita e il pacchetto di applicazione livello dati contenente la nuova versione dell'applicazione stessa.

  2. Nella pagina Rileva modifiche, esaminare il report delle modifiche apportate al database.

  3. Selezionare Annulla se non si desidera proseguire con l'aggiornamento.

  4. Per ulteriori informazioni sull'utilizzo della procedura guidata, vedere Aggiornare un'applicazione livello dati.

Visualizzare modifiche al database tramite PowerShell

  1. Creare un oggetto server SMO e impostarlo sull'istanza contenente l'applicazione livello dati da visualizzare.

  2. Aprire un oggetto ServerConnection e collegarlo alla stessa istanza.

  3. Specificare il nome dell'applicazione livello dati in una variabile.

  4. Utilizzare il metodo GetDatabaseChanges() per recuperare un oggetto ChangeResults e reindirizzare l'oggetto a un file di testo per generare un report semplice degli oggetti nuovi, eliminati e modificati.

[Torna all'inizio]

Visualizzare esempio di modifiche al database (PowerShell)

Visualizzare esempio di modifiche al database (PowerShell)

Nell'esempio seguente vengono segnalate eventuali modifiche apportate al database in un'applicazione livello dati distribuita denominata 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

[Torna all'inizio]

Visualizzare azioni di aggiornamento

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-SQL che verranno eseguite durante l'aggiornamento, quindi controllare le istruzioni.

Segnalare azioni di aggiornamento tramite una procedura guidata

  1. Eseguire l'aggiornamento guidato dell'applicazione livello dati, specificare l'applicazione livello dati correntemente distribuita e il pacchetto di applicazione livello dati contenente la nuova versione dell'applicazione stessa.

  2. Nella pagina Riepilogo, esaminare il report delle azioni di aggiornamento.

  3. Selezionare Annulla se non si desidera proseguire con l'aggiornamento.

  4. Per ulteriori informazioni sull'utilizzo della procedura guidata, vedere Aggiornare un'applicazione livello dati.

[Torna all'inizio]

Segnalare azioni di aggiornamento tramite PowerShell

  1. Creare un oggetto server SMO e impostarlo sull'istanza contenente l'applicazione livello dati distribuita.

  2. Aprire un oggetto ServerConnection e collegarlo alla stessa istanza.

  3. Utilizzare System.IO.File per caricare il file del pacchetto di applicazione livello dati.

  4. Specificare il nome dell'applicazione livello dati in una variabile.

  5. Utilizzare il metodo GetIncrementalUpgradeScript() per ottenere un elenco delle istruzioni Transact-SQL che verrebbero eseguite durante un aggiornamento e reindirizzare l'elenco a un file di testo.

  6. Chiudere il flusso di file utilizzato per leggere il file del pacchetto di applicazione livello dati.

[Torna all'inizio]

Visualizzare esempio di azioni di aggiornamento (PowerShell)

Visualizzare esempio di azioni di aggiornamento (PowerShell)

Nell'esempio seguente vengono segnalate le istruzioni Transact-SQL che sarebbero eseguite per l'aggiornamento di una'applicazione livello dati con nome MyApplicaiton allo schema definito in un file MyApplicationVNext.dacpac.

## 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\MyApplicationVNext.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()

[Torna all'inizio]

Confronto di applicazioni livello dati

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. Se non si dispone di una copia del pacchetto di applicazione livello dati corrente, è possibile estrarre un pacchetto dal database corrente.

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.

In alternativa, decomprimere le applicazioni livello dati in cartelle separate. È possibile quindi utilizzare uno strumento delle differenze, quale l'utilità WinDiff, per analizzare le differenze.

[Torna all'inizio]

Vedere anche

Concetti

Applicazioni livello dati

Distribuire un'applicazione livello dati

Aggiornare un'applicazione livello dati