Condividi tramite


Confrontare e sincronizzare gli schemi di database

Le informazioni contenute in questo argomento sono valide per:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

Argomento applicabile Argomento applicabile Argomento non applicabile Argomento non applicabile

È possibile utilizzare Visual Studio Premium o Visual Studio Ultimate per confrontare uno schema di destinazione con uno schema di origine. Per ogni differenza riscontrata, è possibile specificare se aggiornare il database di destinazione affinché corrisponda al database di origine. È quindi possibile scrivere tali aggiornamenti direttamente nella destinazione oppure esportare lo script di aggiornamento nell'editor Transact-SQL o in un file. È possibile inoltre salvare i confronti come parte del progetto di database o come file autonomo. Il salvataggio dei confronti consente di ripeterli più facilmente o di eseguire nuovamente la sincronizzazione tra la stessa origine e la stessa destinazione.

Tipi di confronti tra schemi

È possibile confrontare le entità seguenti in cui sono contenute definizioni dello schema di database:

  • Database SQL Server: database in esecuzione su un'istanza di SQL Server 2008 o di SQL Server 2005

  • Progetto di database: progetto contenente definizioni per un database di SQL Server 2008 o SQL Server 2005, tramite la cui compilazione viene generato un file con estensione dbschema

  • Progetto server: progetto contenente definizioni per oggetti server e oggetti nel database 'master' in un server di SQL Server 2008 o SQL Server 2005, tramite la cui compilazione viene generato un file con estensione dbschema

  • Progetto Componente applicazione del livello dati (DAC, Data-tier Application Component): progetto tramite la cui compilazione viene generato un file con estensione dacpac

  • File con estensione dbschema: output della compilazione di un progetto di database o server

  • File con estensione dacpac : output della compilazione di un progetto Componente applicazione del livello dati (DAC)

Nella tabella seguente vengono mostrati i tipi di schemi che è possibile confrontare e viene indicato se è possibile scrivere gli aggiornamenti nel database di destinazione:

Origine (sotto),

Destinazione (affianco)

Database SQL Server

Progetto di database

File con estensione dbschema

Progetto server

Progetto DAC

File con estensione dacpac

Database SQL Server

Confronto + aggiornamento

Confronto + aggiornamento

Confronto

Confronto + aggiornamento

Confronto

Confronto

Progetto di database

Confronto + aggiornamento

Confronto + aggiornamento

Confronto

Nessuno

Nessuno

Nessuno

File con estensione dbschema

Confronto + aggiornamento

Confronto + aggiornamento

Confronto

Confronto + aggiornamento

Nessuno

Nessuno

Progetto server

Confronto + aggiornamento

Nessuno

Confronto

Confronto + aggiornamento

Nessuno

Nessuno

Progetto DAC

Confronto

Nessuno

Nessuno

Nessuno

Confronto + aggiornamento

Confronto

File con estensione dacpac

Confronto

Nessuno

Nessuno

Nessuno

Confronto + aggiornamento

Confronto

Per leggere questa tabella, trovare la riga per lo schema di origine nella colonna all'estrema sinistra. Quindi, trovare la colonna per lo schema di destinazione nella riga superiore. Nell'intersezione tra questa colonna e questa riga è indicato se è solo possibile confrontare l'origine e la destinazione oppure se è possibile eseguire il confronto e quindi facoltativamente aggiornare lo schema di destinazione.

Non è possibile eseguire il confronto di uno schema di server in base a uno schema di database o viceversa. Sono inclusi gli schemi in formato di file con estensione dbschema. È possibile, ad esempio, confrontare un progetto server con un file con estensione dbschema creato da un progetto server.

È possibile confrontare due progetti di database solo se sono contenuti all'interno della stessa soluzione in Visual Studio.

Nota di avvisoAttenzione

Sebbene sia possibile confrontare un database di origine con un progetto di database di destinazione (con estensione dbproj), è necessario modificare il progetto di database e distribuire le modifiche nel database. Quando un utente modifica il progetto (con estensione dbproj) e lo distribuisce, riduce il rischio che le modifiche entrino in conflitto con le modifiche apportate da un altro membro del team perché il progetto è sottoposto al controllo delle versioni.

Protezione dalla perdita di dati in caso di aggiornamento degli schemi di database

Quando si utilizza Confronto schema per aggiornare gli schemi di database, è possibile che si verifichi una perdita di dati. Per evitare questo problema, è necessario prestare particolare attenzione ai nomi degli oggetti presenti nell'origine e nella destinazione, soprattutto prima di aggiornare lo schema nella destinazione.

Si potrebbe, ad esempio, rinominare una tabella da Order_Details a OrderDetails nel database di origine, ma non nel database di destinazione e confrontare quindi i due database. Prima della sincronizzazione, i dati di entrambe le tabelle sono identici. Tuttavia, quando si aggiorna la destinazione, la tabella Order_Details viene eliminata e viene creata una 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 scrivervi gli aggiornamenti. È possibile specificare anche le opzioni per un confronto quando si confrontano gli schemi. Per ulteriori informazioni, vedere Procedura: impostare le opzioni per il confronto di schemi di database.

Nota importanteImportante

Se si utilizza il refactoring per rinominare gli oggetti nel progetto di database, il log di refactoring consente di evitare la perdita dei dati durante la compilazione e la distribuzione del database. Questo log mantiene inalterato lo scopo delle modifiche. Ad esempio, è possibile rinominare le tabelle sul posto.

Differenze tra confronto schema e distribuzione incrementale

Durante la distribuzione degli aggiornamenti in un database esistente si verifica un processo molto simile al Confronto schema utilizzato per sincronizzare due schemi di database. Il Confronto schema presenta tuttavia una differenza fondamentale, dal momento che, per impostazione predefinita, vengono ignorate le proprietà estese.

È possibile modificare le opzioni di Confronto schema relativamente a tutte le sessioni o solo alla sessione corrente, se non si desidera ignorare le proprietà estese e le autorizzazioni. Per ulteriori informazioni, vedere Procedura: impostare le opzioni per il confronto di schemi di database.

Attività comuni

Nella tabella seguente sono incluse le descrizioni di attività comuni che supportano questo scenario e vengono forniti i collegamenti a ulteriori informazioni su come completare tali attività.

Attività comuni

Contenuto di supporto

Fare pratica: è possibile eseguire la procedura dettagliata introduttiva per acquisire familiarità con il confronto di due database o di un database e un progetto (con estensione dbproj).

Procedura dettagliata: confronto degli schemi di due database

Procedura dettagliata: confronto degli schemi di un database e di un progetto di database

Impostare opzioni per controllare il confronto degli schemi: è possibile configurare dettagli che consentono di controllare la modalità di confronto degli schemi. È possibile ignorare tipi specifici di differenze, ad esempio gli spazi vuoti, i gruppi di file e i commenti. È possibile inoltre ignorare determinate categorie di oggetti, ad esempio gli utenti o gli accessi. L'utente può specificare le opzioni che consentono di controllare lo script di aggiornamento generato.

Procedura: impostare le opzioni per il confronto di schemi di database

Confrontare database o oggetti server e aggiornare facoltativamente la destinazione in base all'origine: si specificano uno schema di origine e uno di destinazione da confrontare e i risultati vengono visualizzati nella finestra Confronto schema. È possibile visualizzare i dettagli delle differenze e lo script di aggiornamento da utilizzare per la sincronizzazione del database. Ogni confronto di schemi può essere salvato nel progetto o in un file autonomo con estensione scmp. Dopo aver specificato azioni per ogni differenza tra gli schemi di origine e di destinazione, è possibile scrivere gli aggiornamenti nella destinazione. È possibile inoltre esportare lo script di aggiornamento nell'editor Transact-SQL o in un file in modo da poterlo rivedere prima di applicare le modifiche alla destinazione.

Procedura: confrontare gli schemi di database

Informazioni sui risultati di Confronto schema

Risolvere i problemi: è possibile acquisire ulteriori informazioni sulla risoluzione dei problemi comuni che possono verificarsi quando si confrontano e sincronizzano gli schemi di database.

Risoluzione dei problemi relativi al confronto di schemi

Informazioni sui risultati di Confronto schema

Nella finestra Confronto schema sono visualizzate quattro colonne per ogni oggetto sottoposto al confronto. Nella tabella riportata di seguito viene fornita una descrizione del contenuto di ciascuna colonna.

Colonna

Valori

Stato

  • Uguale: l'oggetto dispone della stessa definizione e contiene gli stessi oggetti nello schema di origine e nello schema di destinazione.

  • Nuovo: l'oggetto è presente nello schema di origine, ma non nello schema di destinazione.

  • Mancante: l'oggetto è presente nello schema di destinazione, ma non nello schema di origine.

  • Definizione diversa: l'oggetto dispone di una definizione diversa nello schema di origine rispetto a quella presente nello schema di destinazione.

  • Dipendenze diverse: l'oggetto dispone della stessa definizione, ma nello schema di origine e nello schema di destinazione sono inclusi oggetti diversi.

Ad esempio, è possibile modificare una definizione della tabella nello schema di origine, ma non nello schema di destinazione e quindi confrontarli. Le tabelle saranno contrassegnate come Definizione diversa e lo schema contenente tali tabelle come Dipendenze diverse.

NomeOrigine (Origine {progetto, database o file di progetto (estensione dbschema)})

Nome del progetto, del database o del file di progetto di origine sottoposto al confronto.

Azione di aggiornamento

  • Ignora: l'oggetto non sarà aggiornato nello schema di destinazione. Se nell'oggetto sono presenti dipendenze che sono state modificate, l'icona indicherà che è necessario espandere questa riga per visualizzare l'oggetto diverso a cui si fa riferimento.

  • Ignora riferimenti: l'oggetto è disponibile in un database a cui si fa riferimento e non deve essere eliminato o creato.

  • Crea: l'oggetto verrà creato quando si scrivono gli aggiornamenti o quando si esegue lo script di aggiornamento.

  • Aggiorna: la definizione dell'oggetto verrà aggiornata in modo da corrispondere allo schema di origine quando si scrivono gli aggiornamenti o quando si esegue lo script di aggiornamento.

  • Elimina: l'oggetto verrà rimosso dallo schema di destinazione quando si scrivono gli aggiornamenti o quando si esegue lo script di aggiornamento.

NotaNota
L'azione predefinita è determinata dallo stato.Per gli oggetti impostati su Uguale, l'azione predefinita è Ignora e non è possibile modificarla.Per gli oggetti impostati su Nuovo, l'azione predefinita è Crea, ma è possibile specificare Ignora.Per gli oggetti impostati su Mancante, l'azione predefinita è Elimina, ma è possibile specificare Ignora.Per Definizione diversa l'azione predefinita è Aggiorna, ma è possibile specificare Ignora.Per gli oggetti diversi, l'azione predefinita è Ignora e non è possibile modificarla (in questo caso, l'oggetto è uguale, ma vi sono inclusi oggetti nuovi, mancanti o modificati).

NomeDestinazione (Destinazione {progetto, database o file di progetto (estensione dbschema)})

Nome del progetto, del database o del file di progetto di destinazione sottoposto al confronto.

Scenari correlati

Cronologia delle modifiche

Data

Cronologia

Motivo

Giugno 2010

Sono state aggiunte informazioni su come leggere la prima tabella nell'argomento per soddisfare i commenti e suggerimenti dei clienti.

Commenti e suggerimenti dei clienti.

Agosto 2010

È stato chiarito che i processi possono essere confrontati solo se sono contenuti nella stessa soluzione.

Commenti e suggerimenti dei clienti.