Condividi tramite


Panoramica del confronto degli schemi

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase 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. Al termine del confronto, i risultati del confronto vengono visualizzati come un set di azioni che rendono la destinazione uguale all'origine. Le differenze tra i modelli di database vengono presentate in modo simile a quello di un diff del controllo del codice sorgente. Se la destinazione di confronto dello schema è un progetto SQL o un database, è possibile aggiornare la destinazione direttamente dall'interfaccia di confronto dello schema o generare uno script di aggiornamento con lo stesso effetto.

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

Confronto schemi consente le seguenti caratteristiche:

  • Confrontare gli schemi tra due .dacpac file, database o progetti SQL.
  • Visualizzare i risultati come set di azioni in modo che corrispondano a una destinazione rispetto 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 applicare le modifiche in un secondo momento.
  • Salva 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 una delle opzioni seguenti:

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

Nel confronto dello schema, puoi analizzare ed esaminare ogni differenza nella griglia dei risultati o in forma di script, dove 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 degli schemi

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 utilizzare la comparazione 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, i risultati del confronto raggruppano tutte le differenze 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 procedure memorizzate).

  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 resa grigia. Quando Schema Compare è usato per aggiornare il database di destinazione, questa riga non è inclusa 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. Quando si raggruppano i risultati in base allo schema, fare clic con il pulsante destro del mouse sulla riga del gruppo è 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 ignorate.

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.

Nota

Il confronto dello schema grafico è disponibile parzialmente nell'anteprima dei progetti SQL in stile SDK in Visual Studio. I confronti dello schema sono disponibili per database e .dacpac file connessi, i progetti di database SQL non sono ancora disponibili.

  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 procedure memorizzate).

  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 resa grigia. Quando Schema Compare è usato per aggiornare il database di destinazione, questa riga non è inclusa 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.

Altre informazioni dettagliate sul confronto tra schemi in Visual Studio Code sono disponibili nell'articolo Confronto schema (anteprima)

  1. In Visual Studio Code nel riquadro comandi (ctrl/cmd+shift+P), cercare e selezionare MSSQL: Confronto schema (anteprima) .

    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 Visual Studio Code.

    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 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. Se si selezionano i puntini di sospensione per l'origine o la destinazione, viene aperta una finestra di dialogo in cui è possibile aggiornarli. 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.

    Screenshot della finestra di dialogo Selezione origine confronto degli schemi in Visual Studio Code.

    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 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 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. Quando si usa il confronto dello schema per aggiornare il database di destinazione, questa riga non viene considerata per le modifiche in sospeso.

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