Convalidare un pacchetto di applicazione livello dati

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

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

I metodi per aggiornare un pacchetto di applicazione livello dati includono:

Pacchetti di applicazione livello dati non attendibili

È consigliabile evitare di distribuire un pacchetto di applicazione livello dati proveniente da origini sconosciute o non attendibili. Tali applicazioni livello dati potrebbero contenere codice dannoso che potrebbe eseguire codice Transact-SQL indesiderato o causare errori modificando lo schema. Prima di usare un'applicazione livello dati proveniente da un'origine sconosciuta o non attendibile, implementarla in un'istanza di test isolata del motore di database, eseguire DBCC CHECKDB (Transact-SQL) sul database ed esaminare anche il codice nel database, ad esempio stored procedure o altro codice definito dall'utente.

Visualizzare il contenuto di un'applicazione livello dati

Sono disponibili due meccanismi per la visualizzazione del contenuto di un pacchetto di applicazione livello dati:

  • importare il pacchetto di applicazione livello dati in un progetto SQL in SQL Server Developer Tools
  • pubblicare il pacchetto di applicazione livello dati in un'istanza di test

importare un'applicazione livello dati in SQL Server Developer Tools

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

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

  3. In Esplora soluzioni fai clic con il pulsante destro del mouse sul nodo del progetto e seleziona Proprietà....

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

  5. In Esplora soluzioni fai clic con il pulsante destro del mouse sul nodo del progetto e seleziona Importa applicazione livello dati....

  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.

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

Pubblicare il pacchetto di applicazione livello dati in un'istanza di test

Sono disponibili molteplici strumenti per pubblicare un pacchetto di applicazione livello dati in un'istanza di test. L'estensione SQL Server Dacpac per Azure Data Studio contiene la Procedura guidata applicazione livello dati. Verrà illustrata la pubblicazione di un pacchetto di applicazione livello dati in un'istanza di test.

  1. Se necessario, implementare un'istanza di test usando la procedura guidata di distribuzione.

  2. Connettiti all'istanza di test in Azure Data Studio e fai clic con il pulsante destro del mouse sul nodo server. Seleziona Procedura guidata applicazione livello dati dal menu contestuale.

  3. Nel passaggio 1 della procedura guidata seleziona Implementare un file con estensione .dacpac dell'applicazione livello dati in un'istanza di SQL Server

  4. Nel passaggio 2 della procedura guidata, immetti la posizione del file e seleziona Nuovo database per il database obiettivo. Immettere un nome per il database.

  5. Nel passaggio 3 della procedura guidata esamina il riepilogo prima di selezionare Implementa.

  6. Al termine della distribuzione, esamina il contenuto del database in Esplora oggetti.

  7. FACOLTATIVO: fai clic con il pulsante destro del mouse sul database in Esplora oggetti e seleziona Crea progetto dal database per generare un progetto SQL dal database.

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. In diversi scenari è possibile visualizzare la differenza tra un database e un pacchetto di applicazione livello dati. Per esempio, è possibile che siano state apportate modifiche direttamente al database associato, il che potrebbe creare conflitti con lo schema definito in una nuova versione dell'applicazione livello dati.

Tutti i database

Visualizza le modifiche del database usando il confronto schemi

  • Usando l'estensione Confronto schemi in Azure Data Studio, le differenze dello schema tra un file .dacpac esistente e un database o due degli stessi possono essere visualizzate in Windows, macOS e Linux.

  • Usando SQL Server Data Tools in Visual Studio, le differenze dello schema tra un file .dacpac esistente e un database o due degli stessi possono essere visualizzate in Windows.

Visualizza le modifiche del database tramite CLI SqlPackage

La CLI SqlPackage può essere usata con l'azione DeployReport per visualizzare le differenze tra un file .dacpac e un database tramite le azioni che verrebbero eseguite se il file .dacpac fosse pubblicato nel database.

Database registrati come applicazione livello dati

Visualizza modifiche al database tramite una procedura guidata

  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.

  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 altre informazioni sull'uso della procedura guidata, vedere Aggiornare un'applicazione livello dati.

Visualizza 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 connetterlo alla stessa istanza.

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

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

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  

Visualizza le modifiche del database tramite CLI SqlPackage

La CLI SqlPackage può essere usata con l'azione DriftReport per visualizzare le modifiche apportate a un database dall'ultima registrazione.

Visualizza azioni di aggiornamento

Tutti i database

Visualizza le modifiche del database usando la pubblicazione del progetto SQL

  • Usando l'estensione progetti di database SQL in Azure Data Studio, le azioni da eseguire quando un progetto SQL verrà pubblicato in un database possono essere visualizzate in Windows, macOS e Linux selezionando "Genera script" durante il processo di pubblicazione.

  • Usando SQL Server Data Tools in Visual Studio, le azioni da eseguire quando un progetto SQL verrà pubblicato in un database possono essere visualizzate in Windows come script di distribuzione.

Visualizza le azioni di aggiornamento tramite CLI SqlPackage È possibile usare CLI SqlPackage con l'azione DeployReport per visualizzare le differenze tra un file .dacpac e un database tramite le azioni che verrebbero eseguite se il file .dacpac fosse pubblicato nel database.

Database registrati come applicazione livello dati

Prima di utilizzare una nuova versione di un pacchetto di applicazione livello dati per aggiornare un'applicazione livello dati implementata da un pacchetto di applicazione livello dati precedente, puoi 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 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.

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

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

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

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 connetterlo alla stessa istanza.

  3. Usare 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. 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.

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

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.

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

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

Vedi anche

Applicazioni livello dati
Distribuire un'applicazione livello dati
Aggiornare un'applicazione livello dati