Procedura: confrontare e sincronizzare i dati di due database

È possibile confrontare i dati contenuti in due database. I database che si confrontano sono chiamati origine e destinazione.

Nota

I progetti di database e i pacchetti con estensione dacpac o bacpac non possono essere l'origine o la destinazione in un confronto di dati.

Quando i dati vengono confrontati, viene generato uno script Data Manipulation Language (DML) che è possibile usare per sincronizzare i database aggiornando alcuni o tutti i dati nel database di destinazione. Al termine del confronto dei dati, i risultati vengono visualizzati nella finestra Confronto dati di Visual Studio.

Al termine del confronto, è possibile eseguire altri passaggi:

Per altre informazioni, vedere Confrontare e sincronizzare i dati in una o più tabelle e i dati di un database di riferimento.

Nota

È inoltre possibile confrontare lo schema di due database o di due versioni dello stesso database. Per altre informazioni, vedere Procedura: Usare il confronto schema per confrontare definizioni di database diverse.

Confronta i dati di database

Confronta i dati utilizzando la procedura guidata di confronto dei dati

  1. Dal menu principale passare a Strumenti ->SQL Server ->Nuovo confronto dati.

    Viene visualizzata la procedura guidata Nuovo confronto dati. Viene inoltre aperta la finestra Confronto dati e Visual Studio assegna automaticamente un nome quale DataCompare1.

  2. Identificare i database di origine e di destinazione.

    Se l'elenco Database di origine o Database di destinazione è vuoto, fare clic su Nuova connessione. Nella finestra di dialogo Proprietà connessione identificare il server in cui risiede il database e il tipo di autenticazione da usare per la connessione al database. Quindi selezionare OK per chiudere la finestra di dialogo Proprietà connessione e tornare alla procedura guidata Confronto dati.

    Nella prima pagina della procedura guidata Confronto dati verificare che le informazioni per ogni database siano corrette, specificare quali record includere nei risultati e fare clic su Avanti. Viene visualizzata la seconda pagina della procedura guidata Confronto dati e viene riportato un elenco gerarchico delle tabelle e viste nel database.

  3. Selezionare le caselle di controllo per le tabelle e le viste da confrontare. Facoltativamente, espandere i nodi per gli oggetti di database e selezionare le caselle di controllo per le colonne negli oggetti da confrontare.

    Nota

    Tabelle e viste devono soddisfare due criteri per essere visualizzate nell'elenco. Innanzitutto, gli schemi degli oggetti devono corrispondere tra i database di origine e destinazione. In secondo luogo, solo le tabelle e le viste con una chiave primaria, una chiave univoca, un indice univoco o un vincolo univoco vengono visualizzate nell'elenco. Se nessuna tabella o vista soddisfa entrambi i criteri, l'elenco sarà vuoto.

  4. Se sono presenti più chiavi, è possibile usare la colonna Chiave di confronto per specificare la chiave su cui basare il confronto dei dati. Ad esempio, è possibile specificare se basare il confronto sulla colonna chiave primaria o su un'altra colonna chiave (identificabile in modo univoco).

  5. Selezionare Fine.

    Viene avviato il confronto.

    Nota

    È possibile interrompere un'operazione di confronto dei dati in corso aprendo Confronto dati dal menu SQL e facendo clic su Interrompi confronto dati.

    Al termine del confronto, è possibile visualizzare le differenze dei dati tra i due database. È anche possibile aggiornare parzialmente o completamente i dati nel database di destinazione in modo corrispondente ai dati nel database di origine.

Confronto dei dati utilizzando il modello di automazione di Visual Studio

  1. Aprire il menu Visualizza, spostare il puntatore su Altre finestre e quindi su Finestra di comando.

  2. Nella finestra di comando, digitare il comando seguente:

    Tools.NewDataComparison /SrcServerName sServerName /SrcDatabaseName sDatabaseName /SrcUserName sUserName /SrcPassword sPassword /SrcDisplayName sDisplayName /TargetServerName tServerName /TargetDatabaseName tDatabaseName /TargeUserName tUserName /TargetPassword tPassword /TargetDisplayName tDisplayName
    

    Sostituire i segnaposto (sServerName, sDatabaseName, sUserName, sPassword, sDisplayName, tServerName, tDatabaseName, tUserName, tPassword e tDisplayName) con i valori relativi ai database di origine e di destinazione.

    Se non si specifica un'origine e una destinazione, viene visualizzata la finestra di dialogo Nuovo confronto dati. Per altre informazioni sui parametri del comando Tools.NewDataComparison, vedere Tabella di riferimento dei comandi di automazione per le funzionalità di database di Visual Studio Team System.

    I dati nei database di origine e di destinazione specificati vengono confrontati. I risultati vengono visualizzati in una sessione di Confronto dati. Per altre informazioni sulla visualizzazione dei risultati o sulla sincronizzazione dei dati, vedere Visualizzazione delle differenze dei dati e Sincronizzazione dei dati di database.

Visualizzare le differenze dei dati

Una volta completato il confronto dei dati nei due database, in Confronto dati viene elencato ogni oggetto di database confrontato e ne viene riportato lo stato. È anche possibile visualizzare i risultati per i record in ogni oggetto, raggruppati in base allo stato. Per altre informazioni sulle designazioni dello stato, vedere Confrontare e sincronizzare i dati in una o più tabelle e i dati di un database di riferimento.

Dopo avere visualizzato le differenze, è possibile aggiornare la destinazione in modo corrispondente all'origine per alcuni o tutti gli oggetti o record diversi, mancanti o nuovi. Per altre informazioni, vedere Sincronizzazione dei dati di database.

Visualizzare le differenze dei dati

  1. Confrontare i dati in un database di origine e di destinazione. Per altre informazioni, vedere Confronto dei dati di database.

  2. (Facoltativo) Eseguire una o entrambe le operazioni seguenti:

    • Per impostazione predefinita, sono visualizzati i risultati per tutti gli oggetti, indipendentemente dal loro stato. Per visualizzare solo gli oggetti che presentano uno stato specifico, scegliere un'opzione nell'elenco Filtro.

    • Per visualizzare i risultati per i record in un oggetto specifico, selezionare l'oggetto nel riquadro principale dei risultati e quindi selezionare una scheda nel riquadro di visualizzazione dei record. In ogni scheda vengono visualizzati tutti i record nell'oggetto che presenta uno stato particolare: diverso, solo nell'origine, solo nella destinazione e identico. I dati vengono visualizzati per record e per colonna.

Sincronizzazione dei dati di database

Dopo aver confrontato i dati in due database, è possibile sincronizzarli aggiornando completamente o parzialmente la destinazione in modo che corrisponda all'origine. È possibile confrontare i dati in due tipi di oggetti di database: tabelle e viste.

Aggiornare i dati di destinazione tramite il comando Scrivi aggiornamenti

  1. Confrontare i dati in un database di origine e di destinazione. Per altre informazioni, vedere Confronto dei dati di database.

    Al termine del confronto, nella finestra Confronto dati vengono elencati i risultati per gli oggetti confrontati. Quattro colonne (denominate Record diversi, Solo nell'origine, Solo nella destinazione e Record identici) visualizzano informazioni sugli oggetti che non sono identici. Per ognuno di questi oggetti, queste colonne indicano il numero di record rilevati diversi e il numero di record che verrebbero modificati da un'operazione di aggiornamento. Questi due numeri inizialmente sono uguali, ma nel passaggio 4 è possibile modificare quali oggetti aggiornare.

    Per altre informazioni, vedere Confrontare e sincronizzare i dati in una o più tabelle e i dati di un database di riferimento.

  2. Nella tabella della finestra Confronto dati, selezionare una riga.

    Il riquadro Dettagli mostra i risultati per i record nell'oggetto database selezionato. I record vengono raggruppati in base allo stato in schede che è possibile utilizzare per specificare i dati che verranno propagati dall'origine alla destinazione.

  3. Nel riquadro Dettagli, fare clic su una scheda il cui nome contenga un numero diverso da zero (0).

    La colonna Aggiorna della tabella Solo nella destinazione contiene caselle di controllo che è possibile usare per selezionare le righe da aggiornare. Per impostazione predefinita, tutte le caselle di controllo sono selezionate.

  4. Deselezionare le caselle di controllo per i record nella destinazione che non si desidera aggiornare con i dati dall'origine.

    Quando si deseleziona una casella di controllo, si riduce il numero dei record da aggiornare e la visualizzazione viene modificata per riflettere le azioni eseguite. Questo numero viene visualizzato nella riga dello stato del riquadro dei dettagli e nella colonna corrispondente nel riquadro principale dei risultati, come descritto nel passaggio 1.

  5. (Facoltativo) Selezionare Genera script.

    Viene aperta una finestra dell'editor Transact-SQL e viene visualizzato lo script Data Manipulation Language (DML) che verrà usato per aggiornare la destinazione.

  6. Per sincronizzare record diversi, mancanti o nuovi, fare clic su Aggiorna destinazione.

    Nota

    Mentre il database di destinazione viene aggiornato, è possibile annullare l'operazione selezionando Interrompi scrittura sulla destinazione.

    I dati dei record selezionati nella destinazione vengono aggiornati con i dati dei record corrispondenti nell'origine.

    Nota

    Se si decide di aggiornare le viste indicizzate, l'operazione Aggiorna destinazione potrebbe non riuscire se tale azione causa l'inserimento di chiavi duplicate nella stessa tabella.

Aggiorna i dati di destinazione usando uno script Transact-SQL

  1. Confrontare i dati in un database di origine e di destinazione. Per altre informazioni, vedere Confronto dei dati di database.

    Al termine del confronto, nella finestra Confronto dati vengono elencati gli oggetti confrontati. Per altre informazioni, vedere Confrontare e sincronizzare i dati in una o più tabelle e i dati di un database di riferimento.

  2. (Facoltativo) Nel riquadro Dettagli, deselezionare le caselle di controllo per i record nella destinazione che non si desidera aggiornare, come descritto nella procedura precedente.

  3. Selezionare Genera script.

    In una nuova finestra viene visualizzato lo script Transact-SQL che propagherebbe le modifiche necessarie per rendere i dati nella destinazione corrispondenti ai dati nell'origine. Alla nuova finestra viene assegnato un nome quale DataUpdate_Database_1.sql.

    Questo script riflette le modifiche apportate nel riquadro dei dettagli. Ad esempio, è possibile che si sia deselezionata una casella di controllo per una determinata riga nella pagina Solo nella destinazione per la tabella [dbo].[Shippers]. In questo caso, lo script non aggiorna tale riga.

  4. (Facoltativo) Modificare questo script nella finestra DataUpdate_Database_1.sql.

  5. (Facoltativo ma consigliato) Eseguire il backup del database di destinazione.

  6. Selezionare Esegui per aggiornare il database di destinazione.

    Specificare una connessione al database di destinazione che si desidera aggiornare.

    Importante

    Per impostazione predefinita, gli aggiornamenti vengono eseguiti nell'ambito di una transazione. Se si verificano errori, è possibile eseguire il rollback dell'intero aggiornamento. Questo comportamento può essere modificato.

    I dati dei record selezionati nella destinazione vengono aggiornati con i dati dei record corrispondenti nell'origine.