Share via


Procedura: confrontare 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

Tramite Visual Studio Premium o Visual Studio Ultimate è possibile confrontare due schemi di database. Tali schemi potrebbero essere rappresentati da un database, un progetto applicazione del livello dati, un progetto di database o l'output di compilazione di un progetto di database (file con estensione dbschema). Le entità confrontate sono note come origine e destinazione. Al termine del confronto dello schema, i risultati vengono visualizzati nella finestra Confronto schema. In Visual Studio viene inoltre generato uno script Data Definition Language (DDL) da utilizzare per sincronizzare i diversi schemi.

Se si intende confrontare regolarmente un progetto di database con un database di destinazione, è possibile aggiungere il confronto dello schema al progetto di database. Successivamente, è possibile riconfrontare gli schemi aprendo di nuovo tale confronto. Salvando un confronto dello schema, vengono salvati le informazioni di connessione, le opzioni specifiche della sessione e i valori delle variabili SQLCMD. I risultati non vengono salvati e saranno generati nuovamente quando si apre il file con estensione scmp per il confronto dello schema salvato.

Al termine del confronto, è possibile eseguire altre operazioni:

  • È possibile visualizzare le differenze strutturali tra i due database. Per ulteriori informazioni, vedere Visualizzazione delle differenze tra schemi.

  • Se si decide di sincronizzare gli schemi, è possibile fare clic su Aggiorna script di aggiornamento per visualizzare lo script completo che verrà utilizzato per questa operazione.

  • È possibile aggiornare parzialmente o totalmente la destinazione affinché corrisponda all'origine. Per ulteriori informazioni, vedere Sincronizzazione degli oggetti di database o server.

  • È possibile confrontare i dati che si trovano nel database di destinazione e in quello di origine. Per ulteriori informazioni, vedere Procedura: confrontare e sincronizzare i dati di due database.

Per ulteriori informazioni sugli scenari di confronto degli schemi, vedere Confrontare e sincronizzare gli schemi di database.

È anche possibile confrontare i file dbschema da un prompt dei comandi utilizzando VSDBCMD.EXE. Questa operazione può essere utilizzata, ad esempio, per generare uno script di aggiornamento per aggiornare un database di destinazione quando non si ha accesso diretto al server di destinazione.

In questo argomento

Per confrontare due schemi tramite Confronto schema

  1. Se si desidera confrontare due schemi senza salvare le impostazioni come parte del progetto di database, attenersi alla seguente procedura:

    1. Aprire Confronto schema dal menu Dati, quindi fare clic su Nuovo confronto schema.

    2. Ignorare il passaggio 3.

  2. Se si desidera confrontare due schemi e successivamente salvare le impostazioni come parte del progetto di database, attenersi alla seguente procedura:

    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sulla cartella Confronti tra schemi, scegliere Aggiungi quindi fare clic su Confronto schema.

      Viene visualizzata la finestra di dialogo Aggiungi nuovo elemento.

    2. In Nome digitare il nome che si desidera assegnare al confronto dello schema, quindi fare clic su Aggiungi.

  3. Specificare l'origine e la destinazione che si desidera confrontare scegliendo Progetto, Database o File schema di database per ogni schema.

    Nota

    È possibile specificare un file schema di database per lo schema di destinazione, ma non è possibile aggiornarlo. Per un elenco completo degli scenari di confronto supportati, vedere Confrontare e sincronizzare gli schemi di database.

  4. Se si sceglie Database per il database di origine o per quello di destinazione, eseguire la connessione all'origine dati selezionandola nell'elenco.

    Se il database non è presente nell'elenco, fare clic su Nuova connessione. Nella finestra di dialogo Proprietà connessione, identificare il server in cui si trova l'origine o la destinazione e il tipo di autenticazione da utilizzare per la connessione. È anche possibile scegliere un database in tale server. Al termine dell'operazione, scegliere OK.

    Nota

    Dopo essere stata stabilita, la connessione viene visualizzata in Esplora server in Connessioni dati.

  5. Se è stata selezionata l'opzione File schema di database per l'origine o la destinazione, digitare il percorso e il nome file oppure fare clic su Sfoglia per specificare un file.

  6. (facoltativo) Fare clic su Opzioni per specificare gli oggetti confrontati, i tipi di differenze ignorati e il futuro contenuto dello script di aggiornamento generato.

    Nota importanteImportante

    Per impostazione predefinita, nelle sessioni di confronto degli schemi vengono utilizzate le opzioni che si configurano quando si apre il menu Strumenti e si seleziona Opzioni. Se non si desidera ignorare le proprietà estese, fare clic su Opzioni per modificare l'impostazione corrispondente. Per ulteriori informazioni sulle opzioni di impostazione per il confronto degli schemi, vedere Procedura: impostare le opzioni per il confronto di schemi di database.

  7. (facoltativo) Fare clic su Variabili SqlCmd per specificare un file con estensione sqlcmdvars in cui è contenuto un elenco di variabili e i relativi valori.

    Nota

    È possibile specificare solo le variabili SQLCMD quando si confrontano due progetti (progetti di database, progetti server o progetti applicazione del livello dati).

    I valori saranno sostituiti nel progetto di database corrispondente quando vengono confrontati gli schemi.

  8. Scegliere OK.

    Verrà avviato il confronto degli schemi.

    Nota

    È possibile interrompere un confronto in corso facendo clic su Interrompi sulla barra degli strumenti.

Per confrontare schemi tramite il modello di automazione di Visual Studio

  1. Aprire il menu Visualizza, scegliere Altre finestre e fare clic su Finestra di comando.

  2. Digitare il comando seguente nella finestra di comando:

    Data.NewSchemaComparison sourceIdentifier targetIdentifier
    

    Sostituire sourceIdentifier con uno dei valori seguenti:

    • /ProviderType ConnectionBased /ConnectionString "myConnectString"

    • /ProviderType ConnectionBased /ConnectionName myConnectionName

    • /ProviderType ProjectBased /ProjectName myFileName.dbproj

    • /ProviderType FileBased /ProjectName myFileName.dbschema

    • /ProviderType FileBased /ProjectName myFileName.dacpac

    Sostituire targetIdentifier con uno dei valori seguenti:

    • /ProviderType ConnectionBased /ConnectionString "myConnectString"

    • /ProviderType ConnectionBased /ConnectionName myConnectionName

    • /ProviderType ProjectBased /ProjectName myFileName.dbproj

    • /ProviderType FileBased /ProjectName myFileName.dbschema

    • /ProviderType FileBased /ProjectName myFileName.dacpac

    Se non si specificano un'origine e una destinazione, viene visualizzata la finestra di dialogo Nuovo confronto schema. Per ulteriori informazioni sui parametri del comando Data.NewSchemaComparison, vedere Tabella di riferimento dei comandi di automazione per le funzionalità di database di Visual Studio.

    Gli oggetti e le impostazioni nell'origine e nella destinazione specificate vengono confrontati. I risultati vengono visualizzati in una sessione di confronto degli schemi che, se si desidera, può essere salvata. Per ulteriori informazioni su come visualizzare i risultati o sincronizzare gli schemi, vedere Visualizzazione delle differenze tra schemi e Sincronizzazione degli oggetti di database o server.

Per salvare un confronto dello schema per la prima volta

  1. Scegliere Salva SchemaComparisonName.scmp dal menu File.

    Verrà visualizzata la finestra di dialogo Salva file con nome.

  2. Specificare il percorso e il nome file per il confronto dello schema.

    Se il confronto fa parte del progetto di database, sarà salvato nella cartella SchemaComparisons di quel progetto.

  3. Scegliere Salva.

    Il confronto dello schema viene salvato nel percorso specificato.

Visualizzazione delle differenze tra schemi

È possibile determinare le differenze tra uno schema di origine e uno di destinazione confrontandoli e visualizzando i risultati sotto forma di struttura ad albero nella finestra Confronto schema. Ad esempio, è possibile mostrare solo gli oggetti presenti nell'origine ma non nella destinazione. Inoltre, è possibile visualizzare i dettagli sulle differenze di oggetti particolari e aggiornare i risultati per riflettere le modifiche recenti.

È anche possibile visualizzare i risultati come comandi Transact-SQL in uno script che consentirebbe di sincronizzare la destinazione con l'origine. È possibile visualizzare questo script nella finestra Script di aggiornamento schema o nell'editor Transact-SQL, nonché esportare lo script in un file. Se si decide di aggiornare la destinazione affinché corrisponda all'origine, è possibile eseguire immediatamente lo script per sincronizzare gli schemi oppure modificare lo script e successivamente eseguirlo. Per ulteriori informazioni, vedere Sincronizzazione degli oggetti di database o server.

Per filtrare i risultati in base al tipo

  1. Scegliere Filtro dalla barra degli strumenti Confronto schema.

  2. Fare clic su uno o più filtri per specificare i set di risultati che si desidera visualizzare.

    Nota

    Le impostazioni del filtro vengono salvate con il file con estensione scmp e rimangono invariate anche quando si modificano gli schemi di origine e di destinazione.

Per visualizzare le modifiche all'interno di una definizione dell'oggetto

  • Fare clic su una qualsiasi riga della griglia in cui lo stato è Nuovo, Mancante o Diverso in base alla forma.

Per aggiornare i risultati del confronto

  • Fare clic su Aggiorna sulla barra degli strumenti Confronto schema.

    L'origine e la destinazione vengono confrontati nuovamente e i risultati del confronto vengono aggiornati.

Per visualizzare lo script di sincronizzazione

  • Scegliere Confronto schema dal menu Dati, quindi Mostra script di aggiornamento schema.

    Nota

    Se l'opzione Mostra script di aggiornamento schema non è disponibile, non è possibile generare gli script per la destinazione specificata oppure il confronto deve essere aggiornato. Ad esempio, se lo schema di destinazione è un file con estensione dbschema, non è possibile creare uno script di aggiornamento.

    Viene visualizzata la finestra Script di aggiornamento schema in cui viene mostrato lo script da utilizzare per aggiornare la destinazione affinché corrisponda all'origine.

    Nota

    Se la finestra Script di aggiornamento schema è aperta, è anche possibile fare clic su Aggiorna script di aggiornamento schema.

Per aprire lo script di sincronizzazione nell'editor T-SQL

  • Scegliere Confronto schema dal menu Dati, selezionare Esporta in, quindi Editor.

    Viene visualizzato l'editor Transact-SQL in cui viene mostrato lo script da utilizzare per aggiornare la destinazione affinché corrisponda all'origine.

Per salvare lo script di sincronizzazione in un file

  1. Scegliere Confronto schema dal menu Dati, selezionare Esporta in, quindi File.

    Viene visualizzata la finestra di dialogo Salva script di aggiornamento schema.

  2. In Nome oggetto digitare il nome che si desidera assegnare allo script di sincronizzazione, quindi scegliere Salva.

    Lo script viene salvato nel nome file specificato.

Sincronizzazione degli oggetti di database o server

Dopo aver confrontato gli schemi dell'origine e della destinazione, è possibile sincronizzare un intero schema o soltanto gli oggetti di database specificati al suo interno. Per ulteriori informazioni, vedere Confrontare e sincronizzare gli schemi di database.

Se l'origine e la destinazione si trovano nello stesso server, si potrebbe verificare un errore quando si tenta di sincronizzare gli schemi. L'errore si verifica perché i file di destinazione, ad esempio i file del gruppo di file, non possono essere creati con lo stesso nome dell'origine poiché sono già presenti nel server. Per risolvere questo problema, impostare Azione di aggiornamento su Ignora per i file che creano conflitti.

Nota

I database confrontati sono noti come origine e destinazione. Quando si sincronizzano gli schemi di database, la destinazione viene aggiornata mentre l'origine rimane invariata. Un file di progetto (con estensione dbschema) può essere impostato come destinazione, ma non aggiornato.

Per aggiornare lo schema di destinazione

  1. Confrontare i due schemi.

    Al termine del confronto, nella finestra Confronto schema vengono elencati gli oggetti di database confrontati. Ogni riga rappresenta un oggetto di database.

  2. (Facoltativo) Nella colonna Azione di aggiornamento specificare se applicare o ignorare l'aggiornamento per ogni oggetto nell'elenco dei risultati.

    Le singole azioni di sincronizzazione non vengono eseguite immediatamente, ma vengono memorizzate per l'esecuzione batch nel passaggio seguente.

    Nota

    Per reimpostare la colonna Azione di aggiornamento per tutti gli oggetti di un tipo specifico, fare clic con il pulsante destro del mouse sul nodo relativo a tale tipo, ad esempio Tabelle, quindi scegliere Ripristina impostazioni predefinite. Per impostare la colonna Azione di aggiornamento per tutti gli oggetti di un tipo particolare su uno stato specifico, fare clic con il pulsante destro del mouse sul nodo per tale tipo, quindi selezionare Crea tutto, Aggiorna tutto o Ignora tutto.

  3. Per sincronizzare oggetti di database diversi, mancanti o nuovi, effettuare una delle operazioni seguenti:

    • Per aggiornare immediatamente la destinazione, fare clic su Scrivi aggiornamenti.

      Ad eccezione degli oggetti contrassegnati come Ignora, questa opzione applica lo schema degli oggetti di database selezionati nell'origine agli oggetti corrispondenti nella destinazione. Questa sincronizzazione comporta l'aggiornamento, la creazione o l'eliminazione dell'oggetto di destinazione.

      Nota importanteImportante

      Durante l'aggiornamento dello schema è possibile annullare l'operazione scegliendo Interrompi scrittura sulla destinazione. Se l'aggiornamento viene interrotto, non verranno propagate modifiche per la maggior parte dei tipi di oggetto. Tuttavia, è possibile che per gli oggetti Utente e Ruolo non venga ripristinato lo stato precedente alle modifiche parziali, perché tali oggetti non possono essere incapsulati nelle transazioni.

    • Per esaminare le modifiche prima di aggiornare la destinazione, aprire la finestra Script di aggiornamento schema o fare clic su Esporta nell'Editor.

      Questa scelta comporta la generazione di uno script Transact-SQL che viene aperto in una finestra dell'editor Transact-SQL. È possibile rivedere e, se necessario, modificare lo script prima di eseguirlo nella destinazione. Lo script Transact-SQL generato corrisponde allo script che verrebbe eseguito se si scegliesse Scrivi aggiornamenti.

      Nota

      In Visual Studio i risultati visualizzati nella finestra Confronto schema non vengono aggiornati automaticamente al termine dell'azione Scrivi aggiornamenti. Verrà invece aggiornata la barra di stato per indicare di scegliere Aggiorna. In questo modo è possibile scegliere se confrontare nuovamente gli schemi, un'azione che potrebbe richiedere del tempo se gli schemi sono di grandi dimensioni.

    • Per salvare le modifiche in un file senza visualizzarle nell'editor Transact-SQL fare clic su Esporta nel file.

      Questa scelta comporta la generazione di uno script Transact-SQL che viene salvato nel nome file specificato. Lo script generato corrisponde allo script che verrebbe eseguito se si scegliesse Scrivi aggiornamenti. Questo approccio può essere adottato se un altro utente aggiornerà la destinazione in un secondo momento con lo script fornito o se è necessario apportare modifiche aggiuntive allo script di un'altra persona.

Confrontare gli schemi mediante VSDBCMD.EXE

Può essere opportuno generare uno script di distribuzione per un database a cui non si ha accesso. Questa attività può essere eseguita mediante VSDBCMD.EXE se si dispone del file dbschema per il progetto che si desidera distribuire e il file dbschema che rappresenta lo stato corrente del database di destinazione. Se non si dispone dello schema di destinazione, è possibile chiedere all'amministratore del database di importarlo utilizzando la seconda procedura riportata in questa sezione.

È possibile eseguire entrambe queste procedura su qualsiasi computer che disponga dello strumento VSDBCMD.EXE e dei file di supporto. Tutti i file richiesti sono contenuti nella cartella seguente e nelle relative sottocartelle: %PROGRAM FILES%\Microsoft Visual Studio 10.0\VSTSDB\Deploy. Per ulteriori informazioni, vedere Informazioni di riferimento sulla riga di comando per VSDBCMD.EXE (distribuzione e importazione dello schema).

Per confrontare gli schemi da un prompt dei comandi

  1. Aprire un prompt dei comandi.

  2. Spostarsi sulla cartella contenente VSDBCMD.EXE.

  3. Al prompt dei comandi, digitare il comando seguente: vsdbcmd.exe /a:deploy /dd:- /dsp:sql /model:NomeProgetto.dbschema /targetmodelfile:DatabaseDestinazione.dbschema /DeploymentScriptFile:NomeFileOutput.sql /p:TargetDatabase="NomeDatabaseDestinazione"

    Sostituire NomeProgetto con il nome del file dbschema creato durante la compilazione del progetto di database. Sostituire DatabaseDestinazione con il nome del file dbschema che contiene lo schema per il database di destinazione. Sostituire NomeFileOutput con il nome che si desidera assegnare allo script di distribuzione. Sostituire NomeDatabaseDestinazione con il nome del database che si desidera aggiornare.

    Nota

    Se si desidera includere lo script pre-distribuzione e lo script post-distribuzione dal progetto di database, è possibile aggiungere un parametro alla riga di comando: /ManifestFile:NomeProgetto.deploymanifest. Il file deploymanifest è contenuto in una sottocartella della cartella sql nella cartella del progetto.

  4. È ora possibile utilizzare il file NomeFileOutput.sql per distribuire gli aggiornamenti nel server di destinazione oppure chiedere all'amministratore del database di eseguire questa operazione.

Per importare lo schema di destinazione

  1. Aprire un prompt dei comandi.

  2. Spostarsi sulla cartella contenente VSDBCMD.EXE.

  3. Al prompt dei comandi, digitare il comando seguente: vsdbcmd.exe /a:Import /dsp:sql /model:DatabaseDestinazione.dbschema /cs:StringaConnessione

    Sostituire DatabaseDestinazione con il nome del file dbschema che si sta importando dal database di destinazione. Sostituire StringaConnessione con una stringa di connessione al database di destinazione. Ad esempio, è possibile specificare /cs:"Data Source=MyServer/SQL2K8;Integrated Security=True;Pooling=False;Initial Catalog=MyDatabase".

    Quando il comando è completo, viene creato il file dbschema. Contiene la definizione dello schema per il database dal quale si è eseguita l'importazione. Per ulteriori informazioni, vedere Procedura: importare uno schema da un prompt dei comandi e Informazioni di riferimento sulla riga di comando per VSDBCMD.EXE (distribuzione e importazione dello schema).

Vedere anche

Attività

Procedura: confrontare e sincronizzare i dati di due database

Concetti

Confrontare e sincronizzare gli schemi di database

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2010

Sono state aggiunge informazioni su come utilizzare VSDBCMD.EXE per confrontare gli schemi da un prompt dei comandi.

Commenti e suggerimenti dei clienti.