Condividi tramite


Panoramica del confronto di schemi di database

Aggiornamento: novembre 2007

È possibile utilizzare Visual Studio Team System Database Edition per confrontare gli schemi di due database e decidere se applicare alcuni o tutti gli oggetti dello schema dall'origine alla destinazione. Per uno scenario di esempio, vedere Motivi del confronto degli schemi di database.

È possibile confrontare gli schemi di:

  • due database, incluse due versioni dello stesso database

  • un progetto di database Visual Studio e un database

Per la configurazione del confronto viene utilizzata la finestra di dialogo Confronto schema per specificare origine e destinazione. Per ulteriori informazioni, vedere Procedura: confrontare gli schemi di due database.

Al termine del confronto degli schemi, vengono visualizzati i risultati del confronto. Per ulteriori informazioni, vedere Procedura: visualizzare le differenze tra schemi. È quindi possibile propagare gli elementi dello schema dall'origine alla destinazione. Per ulteriori informazioni, vedere Procedura: sincronizzare gli schemi di database.

Motivi del confronto degli schemi di database

Di seguito, viene descritto uno scenario che illustra l'utilità del confronto degli schemi di database. In questo caso, vengono confrontati un database e un progetto di database, anziché due database.

Sviluppo di database in team

Si supponga che uno sviluppatore di database utilizzi un progetto di database Database Edition per la creazione di un database. Nel corso del tempo, il team genera versioni successive del database e le distribuisce ai server di test. Anche altri membri del team contribuiscono alla progettazione del database.

Dopo avere apportato una serie di modifiche allo schema del database e avere testato tali modifiche sul proprio computer, non avendo rilevato errori, lo sviluppatore intende pubblicare gli aggiornamenti in un server di test per consentire al personale di controllo qualità del team di eseguire test.

Viene aperto il progetto di database e, utilizzando la finestra di dialogo Nuovo confronto schema, viene stabilita una connessione a un server di test. Il progetto (origine) viene confrontato con il database distribuito (destinazione) e vengono rilevate differenze tra molti oggetti delle due entità. L'operazione, inoltre, consente di rilevare che la maggior parte delle differenze vengono riscontrate in oggetti per i quali lo sviluppatore non è responsabile. Si tratta di modifiche apportate da altre persone che lo sviluppatore non intende sovrascrivere.

A questo punto, lo sviluppatore seleziona solo gli oggetti su cui ha lavorato e fa clic su Scrivi aggiornamenti. Tramite questa azione, lo sviluppatore aggiorna la propria parte del database, lasciando inalterate le altre parti. Il lavoro viene quindi distribuito ed è pronto per essere testato.

Nella sezione seguente viene illustrato in che modo in Team Edition for Database Professionals vengono indicati gli oggetti dello schema che sono stati modificati, permettendo di decidere quali azioni eseguire.

Controllo del confronto degli schemi

È possibile specificare le opzioni che controllano il processo di confronto degli schemi e il processo di generazione di script a due livelli. Per impostare le opzioni a livello globale, scegliere Opzioni dal menu Strumenti, espandere Strumenti di database e quindi scegliere Confronto schema. Le opzioni impostate a livello globale incidono su tutte le successive operazioni di confronto degli schemi, a meno che non se ne esegua l'override per un confronto specifico.

Viste Confronto schema

Dopo il confronto di due schemi, nella finestra Confronto schema i risultati vengono visualizzati in una griglia. Nella finestra vengono inoltre visualizzate informazioni sugli oggetti di database, incluso lo script per sincronizzarli.

  • Understanding Schema Compare Results

  • Viewing Object Definitions

  • Previewing the Update Script

Informazioni sui risultati di Confronto schema

La finestra Confronto schema occupa l'area di modifica principale di Visual Studio. In questa finestra vengono visualizzati tutti gli oggetti di entrambi gli schemi, organizzati in cartelle espandibili. Questi oggetti includono tabelle, viste, stored procedure, funzioni, tipi definiti dall'utente, regole, impostazioni predefinite, cataloghi full-text, utenti e ruoli.

Nelle colonne di questa finestra sono riportate le seguenti informazioni su ogni oggetto:

  • Nella prima colonna, Stato, viene visualizzato lo stato del confronto degli oggetti confrontati:

    • Uguale: gli oggetti di origine e di destinazione sono strutturalmente uguali.

    • Diverso: gli oggetti di destinazione e di origine sono strutturalmente diversi.

    • Mancante: l'oggetto è presente nella destinazione, ma non nell'origine.

    • Nuovo: l'oggetto è presente nell'origine, ma non nella destinazione.

    Nota:

    Gli oggetti vengono giudicati uguali o diversi nel contesto di qualsiasi opzione di confronto degli schemi impostata. Per ulteriori informazioni, vedere Controllo del confronto degli schemi.

  • Nella seconda colonna vengono elencati i nomi degli oggetti di schema presenti nell'origine, organizzati in ordine gerarchico per tipo di oggetto. In questa colonna è possibile espandere e comprimere i nodi per visualizzare solo i tipi di oggetto desiderati.

  • Nella terza colonna, Azione di aggiornamento, viene visualizzata l'azione necessaria per sincronizzare la struttura di un determinato oggetto tra i due schemi Le modifiche sono scritte solo nella destinazione. I valori riportati nella colonna Azione di aggiornamento corrispondono ai valori della colonna Stato. Per ogni oggetto, è possibile scegliere l'azione Ignora che consente di lasciare l'oggetto nella destinazione nello stato in cui si trovava prima del confronto. Se la casella di controllo Includi dipendenze è selezionata, può non essere possibile ignorare un aggiornamento Per verificare lo stato di questa casella di controllo, scegliere Opzioni dal menu Strumenti. Se ad esempio nel database di origine è presente una nuova tabella con indici, chiavi e trigger, se si aggiungono indici, chiavi e trigger non è possibile ignorare la tabella.

    Nota:

    Se si modificano i valori nella colonna Azione di aggiornamento, viene effettivamente modificato lo script di aggiornamento che verrà eseguito, ovvero vengono modificati i risultati ottenibili facendo clic su Scrivi aggiornamenti. Per ulteriori informazioni, vedere Procedura: sincronizzare gli schemi di database.

    Nella tabella seguente sono riepilogate queste azioni:

Stato del confronto

Azioni di aggiornamento disponibili (l'azione predefinita è riportata in grassetto).

Descrizione dell'azione predefinita

Uguale

Ignora

L'azione Ignora, predefinita per gli oggetti uguali, lascia invariato l'oggetto.

Diverso

Aggiorna, Ignora

L'azione Aggiorna, predefinita per gli oggetti non uguali, modifica la struttura dell'oggetto nel database di destinazione. L'azione Aggiorna, ad esempio, consente di aggiungere, eliminare o rinominare una colonna in una tabella.

Mancante

Rilascia, Ignora

L'azione Rilascia, predefinita per gli oggetti non presenti nel database di origine, elimina l'oggetto nel database di destinazione.

Nuovo

Crea, Ignora

L'azione Crea, predefinita per gli oggetti non presenti nel database di destinazione, crea l'oggetto nel database di destinazione.

  • Nella quarta colonna sono elencati i nomi degli oggetti dello schema nella destinazione.

Visualizzazione delle definizioni degli oggetti

È inoltre possibile visualizzare la definizione SQL di ogni oggetto di database elencato nella finestra Confronto schema. Facendo clic sulla riga dell'oggetto nella finestra del documento principale, la relativa definizione viene visualizzata nel riquadro di sola lettura Definizioni oggetto. Sul lato sinistro del riquadro Definizioni oggetti viene visualizzata la definizione di un oggetto selezionato nell'origine, mentre sul lato destro viene visualizzata la definizione di un oggetto selezionato nella destinazione. È possibile scorrere contemporaneamente entrambe le definizioni utilizzando le barre di scorrimento presenti su entrambi i lati. Le righe diverse tra le definizioni degli oggetti di origine e di destinazione sono evidenziate.

Le definizioni degli oggetti riflettono lo stato dell'oggetto al momento in cui è stato eseguito il confronto. Non vengono modificate se si modificano i valori nella colonna Azione di aggiornamentoo se l'oggetto viene sottoposto a modifiche all'esterno della sessione di confronto degli schemi.

Anteprima dello script di aggiornamento

Il confronto degli schemi genera inoltre automaticamente uno script di sincronizzazione, che viene visualizzato nella finestra Script di aggiornamento schema. Questo script DDL (linguaggio di definizione dati, Data Definition Language) viene utilizzato per aggiornare la destinazione. Contiene solo oggetti il cui stato di confronto è Aggiorna, Rilascia o Crea. Gli elementi da ignorare non vengono visualizzati nella finestra Script di aggiornamento schema.

Quando si modificano i valori nella colonna Azione di aggiornamento, nella finestra Script di aggiornamento schema vengono riportate le modifiche apportate.

Nota:

L'aggiornamento del contenuto del riquadro Anteprima script può richiedere alcuni secondi, a seconda dell'ampiezza delle modifiche nella colonna Azione di aggiornamento.

Sebbene sia possibile modificare lo script DDL modificando le azioni di aggiornamento, non è possibile eseguire questa operazione direttamente da questa finestra poiché il riquadro Anteprima script è di sola lettura. Se si desidera modificare lo script di aggiornamento, scegliere Esporta nell'Editor e quindi modificare lo script di aggiornamento nell'Editor T-SQL (Transact-SQL).

Aggiornamento dei risultati del confronto

È possibile aggiornare la visualizzazione delle differenze tra lo schema di origine e lo schema di destinazione. Dopo aver confrontato una volta origine e destinazione, può essere opportuno aggiornare la visualizzazione in caso di modifica di uno o di entrambi gli schemi. Può inoltre essere opportuno aggiornare i risultati se si modificano le opzioni di confronto degli schemi. Facendo clic su Aggiorna, le informazioni di configurazione precedentemente indicate vengono nuovamente utilizzate per generare nuovi dati di confronto.

È possibile che dall'ultimo confronto degli schemi siano stati aggiunti o eliminati oggetti di database dall'origine. In questo caso, quando si fa clic su Aggiorna, Confronto schema tenta di includere i nuovi oggetti e di escludere gli oggetti eliminati dal confronto, a seconda dei casi. Se, tuttavia, è stata modificata l'impostazione Azione di aggiornamento per un determinato oggetto, tale impostazione viene conservata indipendentemente dalle modifiche apportate all'oggetto dopo l'ultimo confronto degli schemi.

Propagazione sicura degli schemi di database

La propagazione degli schemi di database può causare la perdita di dati. Per evitare questo problema, è necessario prestare attenzione ai nomi degli oggetti presenti nell'origine e nella destinazione, in particolar modo prima di aggiornare lo schema nella destinazione.

La destinazione, ad esempio, contiene una tabella denominata Order_Details, che nel database di origine è stata rinominata in Order Details, senza carattere di sottolineatura. Viene quindi eseguito il confronto dei due database. Prima di propagare lo schema dall'origine alla destinazione, i dati in entrambe le tabelle sono identici, ma quando si scrivono gli aggiornamenti dello schema nella destinazione, la tabella Order_Details viene eliminata e viene creata una nuova tabella, Order Details. È possibile che tutti i dati presenti nella tabella Order_Details vengano persi.

Per evitare la perdita di dati, scegliere Opzioni dal menu Strumenti e selezionare la casella di controllo Blocca aggiornamenti dello schema se si verifica una perdita di dati. È inoltre opportuno eseguire sempre il backup del database prima di distribuire le modiche.

Vedere anche

Attività

Procedura: confrontare gli schemi di due database

Concetti

Panoramica sulla terminologia di Database Edition

Altre risorse

Cenni preliminari sul confronto di dati di database