Condividi tramite


Panoramica del confronto schemi

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL in Microsoft Fabric

Gli strumenti di confronto dello schema consentono di confrontare due definizioni di database, in cui l'origine e la destinazione del confronto possono essere qualsiasi combinazione di database connesso, progetto di database SQL o file .dacpac. Una volta completato il confronto, i risultati del confronto vengono visualizzati come un set di azioni che rendono la destinazione uguale all'origine in modo analogo a un diff del controllo del codice sorgente. Dall’interfaccia Confronto schema è possibile aggiornare direttamente la destinazione (se la destinazione è un progetto o un database) oppure generare uno script di aggiornamento che produce gli stessi effetti.

Screenshot delle differenze tra un pacchetto e un database come concetto.

Confronto schemi consente le seguenti caratteristiche:

  • Confrontare gli schemi tra due file DACPAC, database o progetti SQL.
  • Visualizzare i risultati come un set di azioni da eseguire sulla destinazione affinché corrisponda all'origine.
  • Escludere selettivamente le azioni elencate nei risultati.
  • Impostare le opzioni che controllano l'ambito del confronto.
  • Applicare le modifiche direttamente alla destinazione o generare uno script per applicarle in un secondo momento.
  • Salvare il confronto.

Funzionalità

Le differenze tra l'origine e la destinazione sono visualizzate in una griglia per facilitarne la revisione. È possibile eseguire un confronto in entrambe le direzioni tra un modello di database derivato da uno dei seguenti elementi:

  • database connessi
  • Progetto di database SQL
  • File .dacpac

Nel confronto dello schema è possibile approfondire ed esaminare ogni differenza nella griglia dei risultati o nel formato script in cui i dettagli delle modifiche sono disponibili a livello di riga. È anche possibile escludere in modo selettivo differenze specifiche prima di aggiornare la destinazione. Gli strumenti di confronto dello schema sono disponibili in Visual Studio, Azure Data Studio e nella riga di comando.

Opzioni di confronto dello schema

Le opzioni per il confronto dello schema vengono estratte dalle opzioni di distribuzione disponibili nella libreria DacFx .NET. Tali opzioni includono:

  • ignorare gli spazi vuoti
  • ignorare schemi di partizione
  • ignorare l'ordine delle colonne
  • eliminare gli indici non presenti nell'origine
  • blocco in caso di possibile perdita di dati

È anche possibile configurare i tipi di oggetto inclusi nel confronto. Questi oggetti includono tabelle, stored procedure, indici, autorizzazioni, tipi definiti dall'utente e altro ancora.

File di confronto schema

La definizione di confronto per il confronto dello schema può essere salvata come file .scmp, noto come file di confronto dello schema. Questo file archivia informazioni sul confronto dello schema in XML e include:

  • informazioni sulla connessione di origine e di destinazione
  • opzione di confronto
  • tipi di oggetto esclusi

È possibile aprire un file .scmp in Visual Studio o Azure Data Studio per eseguire facilmente lo stesso confronto in un secondo momento o condividere il confronto con altri utenti.

Avviare e usare il confronto dello schema

  1. Nel menu Strumenti in Visual Studio selezionare SQL Server e quindi selezionare Nuovo confronto schemi.

    In alternativa, fare clic con il pulsante destro del mouse sul progetto TradeDev in Esplora soluzioni e selezionare Confronto schema.

    Verrà visualizzata la finestra Confronto schema e Visual Studio assegna automaticamente un nome, ad esempio SqlSchemaCompare1.

    Vengono visualizzati due elenchi a discesa con una freccia verde tra di loro proprio sotto la barra degli strumenti Confronto schemi. Questi menu consentono di selezionare le definizioni di database per l'origine e la destinazione del confronto.

  2. Nell'elenco a discesa Seleziona origine, scegliere Seleziona origine e si aprirà la finestra di dialogo Seleziona schema di origine.

    Si noti che se si apre la finestra Confronto schemi facendo clic con il pulsante destro del mouse sul nome del progetto, lo schema di origine è già popolato ed è possibile procedere al passaggio 4.

    Screenshot della finestra di dialogo Selezione origine confronto schema in Visual Studio.

  3. Completare le selezioni per un'origine di confronto dello schema scegliendo un file Project, connessione al database o .dacpac. L'origine è la definizione del database che si vuole usare come base per le modifiche apportate alla destinazione.

  4. Dall'elenco a discesa Seleziona destinazione nella finestra Confronto schema scegliere Seleziona destinazione e verrà visualizzata la finestra di dialogo Seleziona schema di destinazione. Completare le selezioni per una destinazione di confronto dello schema scegliendo un file Project, connessione al database o .dacpac . La destinazione è la definizione del database a cui si desidera valutare e potenzialmente applicare le modifiche.

  5. È inoltre possibile selezionare il pulsante Opzioni nella barra degli strumenti della finestra Confronto schema per specificare quali oggetti vengono confrontati, quali tipi di differenze vengono ignorate e altre impostazioni.

  6. Selezionare il pulsante Confronta nella barra degli strumenti della finestra Confronto schema per avviare il processo di confronto.

    Al termine del confronto, le differenze strutturali tra il progetto e il database verranno visualizzate nel riquadro dei risultatinella parte superiore della finestra. Per impostazione predefinita, nei risultati del confronto tutte le differenze sono raggruppate in base all'azione (ad esempio, Elimina, Modifica o Aggiungi). Nel riquadro dei risultativiene visualizzata una riga per ogni oggetto di database che presenta differenze tra le definizioni di database. Ogni riga identifica l'oggetto nello schema di origine o di destinazione (o entrambi) e l'azione da intraprendere sullo schema di destinazione per rendere l'oggetto di destinazione uguale a quello di origine. Se un oggetto è stato sottoposto a refactoring e rinominato o spostato in un nuovo schema, i nomi di origine e di destinazione sono differenti e il nome dell'origine verrà visualizzato in carattere grassetto per evidenziare la differenza.

    Screenshot dell'interfaccia di confronto dello schema in Visual Studio che confronta un database con un progetto.

    Per impostazione predefinita, gli oggetti uguali in entrambi gli schemi o non supportati per l'aggiornamento (ad esempio, oggetti predefiniti) risultano nascosti nell'elenco dei risultati. È possibile selezionare i pulsanti di filtro appropriati nella barra degli strumenti per visualizzare questi oggetti.

    Per modificare la preferenza di raggruppamento, selezionare l’elenco a discesa Risultati del gruppo nella barra degli strumenti. Selezionare Tipo per raggruppare i risultati per tipo di oggetto (ad esempio, per tabelle, viste o stored procedure).

  7. Per impostazione predefinita, tutte le differenze vengono incluse nell'ambito dell'azione Aggiorna destinazione. È possibile escludere le differenze che non si desidera sincronizzare. A tale scopo, deselezionare l'opzione nella colonna Azione al centro di ogni riga. In alternativa, fare clic con il pulsante destro del mouse su una riga nel riquadro Schema e selezionare Escludi. La riga viene immediatamente disattivata. Quando Confronto schemi è utilizzato per aggiornare il database di destinazione, questa riga non viene considerata per le modifiche in sospeso.

    È inoltre possibile fare clic con il pulsante destro del mouse sulla riga di un gruppo e selezionare Escludi tutto o Includi tutto, che equivale a deselezionare o selezionare tutte le differenze presenti in quel gruppo. Raggruppare i risultati per schema rappresenta un modo utile per includere o escludere tutte le modifiche apportate a uno schema specifico.

    Se per la riga esclusa sono presenti oggetti dipendenti (ad esempio, una riga di una tabella a cui fa riferimento una riga di una vista), la riga esclusa verrà disabilitata ma la casella di controllo corrispondente non verrà deselezionata. Una volta deselezionate tutte le righe dipendenti, la riga disabilitata è deselezionata. Inoltre, se una riga è stata sottoposta a refactoring (rinominata o spostata in un altro schema), la casella di controllo viene disabilitata per quella riga e per tutte le righe figlio dipendenti.

    Se si aggiorna il confronto, le differenze che si è scelto di ignorare vengono escluse.

Per aggiornare lo schema della destinazione, sono disponibili due opzioni. È possibile aggiornare direttamente la destinazione dalla finestra Confronto schema se la destinazione è un progetto o un database oppure generare uno script di aggiornamento se la destinazione è un database o un file di database. Verrà visualizzato uno script generato nell'Editor Transact-SQL in cui è possibile esaminare lo script per eseguirlo su un database.

Il confronto dello schema grafico non è ancora disponibile nell'anteprima dei progetti SQL in stile SDK in Visual Studio. Usare Azure Data Studio per confrontare gli schemi.

Nota

Il confronto schemi non è disponibile in Visual Studio Code. Usare Azure Data Studio o Visual Studio per confrontare gli schemi.

  1. In Azure Data Studio nel riquadro comandi (ctrl/cmd+shift+P), cercare e selezionare Confronto schema.

    In alternativa, fare clic con il pulsante destro del mouse su un progetto di database nella vista Progetti di database o in un database in Esplora oggetti e selezionare Confronto schema.

    Screenshot della voce di menu Confronto schema in Esplora oggetti di Azure Data Studio.

    Viene visualizzata la finestra Confronto schema e un'origine o una destinazione potrebbe essere preimpostata in base al punto di avvio.

    Vengono visualizzati due pulsanti di ellissi con una freccia in mezzo proprio sotto la barra degli strumenti Confronto schemi. Questi menu consentono di selezionare le definizioni di database per l'origine e la destinazione del confronto.

  2. Se si selezionano i puntini di sospensione per l'origine o la destinazione, viene aperta una finestra di dialogo in cui o entrambi possono essere aggiornati. Completare le selezioni per un'origine di confronto dello schema scegliendo un file Project, connessione al database o .dacpac. L'origine è la definizione del database che si vuole usare come base per le modifiche apportate alla destinazione. La destinazione è la definizione del database a cui si desidera valutare e potenzialmente applicare le modifiche.

    Schermata della finestra di dialogo per la selezione dell'origine del confronto degli schemi in Azure Data Studio.

    Al termine delle selezioni, selezionare OK per chiudere la finestra di dialogo e tornare alla finestra Confronto schema.

  3. È inoltre possibile selezionare il pulsante Opzioni nella barra degli strumenti della finestra Confronto schema per specificare quali oggetti vengono confrontati, quali tipi di differenze vengono ignorate e altre impostazioni.

  4. Selezionare il pulsante Confronta nella barra degli strumenti della finestra Confronto schema per avviare il processo di confronto.

    Al termine del confronto, le differenze strutturali tra il progetto e il database verranno visualizzate nel riquadro dei risultatinella parte superiore della finestra. Per impostazione predefinita, nei risultati del confronto tutte le differenze sono raggruppate in base all'azione (ad esempio, Elimina, Modifica o Aggiungi). Nel riquadro dei risultativiene visualizzata una riga per ogni oggetto di database che presenta differenze tra le definizioni di database. Ogni riga identifica l'oggetto nello schema di origine o di destinazione (o entrambi) e l'azione che verrà intrapresa sullo schema di destinazione per rendere l'oggetto di destinazione uguale a quello di origine. Se un oggetto è stato sottoposto a refactoring e rinominato o spostato in un nuovo schema, i nomi di origine e di destinazione sono differenti e il nome dell'origine verrà visualizzato in carattere grassetto per evidenziare la differenza.

    Screenshot dell'interfaccia di confronto dello schema in Azure Data Studio che confronta un database con un progetto.

  5. Per impostazione predefinita, tutte le differenze vengono incluse nell'ambito dell'azione Aggiorna destinazione. È possibile escludere le differenze che non si desidera sincronizzare. A tale scopo, deselezionare l'opzione nella colonna Azione al centro di ogni riga. In alternativa, fare clic con il pulsante destro del mouse su una riga nel riquadro Schema e selezionare Escludi. La riga viene immediatamente disattivata. Quando Confronto schemi è utilizzato per aggiornare il database di destinazione, questa riga non viene considerata per le modifiche in sospeso.

    È inoltre possibile fare clic con il pulsante destro del mouse sulla riga di un gruppo e selezionare Escludi tutto o Includi tutto, che equivale a deselezionare o selezionare tutte le differenze presenti in quel gruppo. Raggruppare i risultati per schema rappresenta un modo utile per includere o escludere tutte le modifiche apportate a uno schema specifico.

    Se per la riga esclusa sono presenti oggetti dipendenti (ad esempio, una riga di una tabella a cui fa riferimento una riga di una vista), la riga esclusa verrà disabilitata ma la casella di controllo corrispondente non verrà deselezionata. Una volta deselezionate tutte le righe dipendenti, la riga disabilitata verrà deselezionata. Inoltre, se una riga è stata sottoposta a refactoring (rinominata o spostata in un altro schema), la casella di controllo viene disabilitata per quella riga e per tutte le righe figlio dipendenti.

    Se si aggiorna il confronto, le differenze che si è scelto di ignorare verranno escluse.

Per aggiornare lo schema della destinazione, sono disponibili due opzioni. È possibile aggiornare direttamente la destinazione dalla finestra Confronto schema con il pulsante Applica se la destinazione è un progetto o un database oppure generare uno script di aggiornamento se la destinazione è un database con il pulsante Genera script. Verrà visualizzato uno script generato nell'Editor Transact-SQL in cui è possibile esaminare lo script per eseguirlo su un database.

Il confronto schemi richiede uno strumento grafico, ad esempio Visual Studio o Azure Data Studio.