Compilazione e distribuzione di database in un ambiente di sviluppo isolato

In un ambiente di sviluppo isolato (spesso definito sandbox) è possibile aggiornare, compilare e distribuire il codice del database senza introdurre modifiche in conflitto tra loro. Dopo avere generato dati di test e avere eseguito unit test del database, è possibile distribuire la propria versione del codice in un server di test o di gestione temporanea in cui verrà unita al codice di altri sviluppatori. Prima di distribuire un progetto di database, è necessario configurarne le proprietà. La configurazione di tali proprietà cambia a seconda che il progetto venga distribuito in un ambiente di sviluppo isolato o in un server di produzione o gestione temporanea.

Configurazione del progetto di database per la distribuzione locale

Quando si configurano le proprietà di distribuzione, è possibile identificare una connessione di database di destinazione, un file deploymentconfig e un file sqlcmdvars specifici dell'ambiente di sviluppo isolato. Nelle proprietà di distribuzione del progetto di database è possibile configurare le impostazioni dell'ambiente di sviluppo isolato affinché risultino diverse dalle impostazioni di distribuzione archiviate nel progetto di database. È pertanto possibile fornire una connessione di database di destinazione al database di sviluppo isolato e file deploymentconfig e sqlcmdvars specifici.

Dettagli relativi alla configurazione della distribuzione

Prima di distribuire il progetto in un ambiente di sviluppo isolato, è necessario risolvere i problemi seguenti:

  • In molti casi, sarà probabilmente preferibile utilizzare le regole di confronto del progetto di database perché l'ambiente di sviluppo deve corrispondere agli ambienti di produzione o gestione temporanea di destinazione.

  • Sarà altrettanto preferibile ricreare sempre il database perché non sono presenti dati di produzione da conservare.

  • Si ritiene necessario distribuire le proprietà del database perché si desidera configurare l'ambiente di sviluppo in modo che corrisponda agli ambienti di produzione o gestione temporanea di destinazione.

  • Non si ritiene necessario eseguire il backup del database perché questa operazione aumenterebbe il sovraccarico della distribuzione e non sarebbe di alcuna utilità perché il database viene ricreato a ogni distribuzione.

  • Non si intende bloccare la distribuzione in caso di perdita di dati perché si generano dati di test e non dati di produzione. Se si ritiene che le modifiche che si intende apportare non causino perdita di dati, è possibile bloccare la distribuzione per verificarlo.

  • Non si intende generare istruzioni DROP per oggetti presenti nel database, ma non nel progetto di database. È possibile che siano stati temporaneamente esclusi gli oggetti incompleti dal progetto di database o che nel database di destinazione siano presenti prototipi di oggetti che si desidera mantenere.

Variabili di comando di SQL

Quando si effettua una distribuzione in un ambiente di sviluppo isolato, le variabili devono presentare valori appropriati per quell'ambiente. L'ambiente di sviluppo potrebbe, ad esempio, richiedere valori per Service Broker o certificati di servizio diversi dai valori degli ambienti di produzione o gestione temporanea. Specificando un file sqlcmdvars diverso per l'ambiente di sviluppo isolato si evita di dover modificare i valori di quelle variabili quando si modificano le destinazioni della distribuzione. Allo stesso modo, decade la necessità di dover definire il file sqlcmdvars in termini di variabili MSBuild per disporre di valori specifici della configurazione. Può essere presente un file sqlcmdvars diverso per ogni configurazione che si desidera distribuire.

Distribuzione di progetti server

Quando si distribuisce un progetto di database, si distribuiscono gli oggetti e le impostazioni per il database. Quando si distribuisce un progetto server, si distribuiscono gli oggetti definiti nel database master, ma le impostazioni server non vengono modificate. È possibile ignorare le impostazioni server o in alternativa verificare che i valori per alcune o tutte le impostazioni nel server di destinazione corrispondano ai valori specificati nel progetto server.

A parte le differenze nella gestione delle impostazioni, un progetto server viene distribuito seguendo le stesse procedure utilizzate per la distribuzione di un progetto di database.

Distribuzione dei ruoli

È necessario distribuire i ruoli utilizzati nel database a tutti i server in cui viene distribuito il database. Nell'ambiente di sviluppo è tuttavia possibile limitare il numero di utenti da associare a ciascun ruolo. Per i test si tende in genere ad associare almeno un utente a ogni ruolo, ma nell'ambiente di sviluppo isolato non è necessario distribuire un set completo di utenti.

Distribuzione dalla riga di comando

È possibile distribuire un progetto di database da un prompt dei comandi in un computer in cui non è installato Visual Studio se si installano i prerequisiti seguenti:

  • Microsoft .NET Framework versione 4

  • SQL Server Management Objects (SMO)

    Questi oggetti devono essere installati nei computer in cui è installato SQL Server.

Oltre a questi prerequisiti, è inoltre necessario trasferire in quel computer i file seguenti con l'ausilio di un'unità USB (Universal Serial Bus):

  • Output di compilazione del progetto di database (debug o versione finale)

  • Contenuto della cartella Deploy per Visual Studio

    Questa cartella si trova in genere in [Programmi]\VSTSDB\Deploy.

  • Assembly per SQL Server Compact Edition

Dopo avere installato i prerequisiti e avere trasferito i file, è possibile distribuire il progetto di database (nel formato del file dbschema) in un database di destinazione.

Dati di riferimento

È possibile aggiungere istruzioni allo script di post-distribuzione nel progetto di database per popolare una o più tabelle con dati di riferimento. Per ulteriori informazioni, vedere Aggiunta di dati di riferimento alle tabelle quando si distribuisce il database.

È inoltre possibile confrontare il database distribuito a un database contenente dati di riferimento se si desidera sincronizzare una o più tabelle. Per ulteriori informazioni, vedere Confrontare e sincronizzare i dati in una o più tabelle e i dati di un database di riferimento.

Attività comuni

Nella tabella seguente è possibile trovare descrizioni di attività comuni che supportano questo scenario e collegamenti a ulteriori informazioni sull'esecuzione corretta di queste attività.

Attività

Argomenti correlati

Apprendimento delle attività di compilazione e distribuzione: prima di configurare, compilare e distribuire il primo progetto di database, è necessario comprendere come utilizzare i progetti di database in un ambiente team. È inoltre possibile migliorare la comprensione del processo di compilazione e distribuzione e imparare tutte le proprietà e le impostazioni che controllano la compilazione e la distribuzione del progetto.

Esercitazioni pratiche: completando le procedure dettagliate introduttive, è possibile apprendere rapidamente l'intero processo, dalla creazione di un ambiente di sviluppo isolato alla definizione di una linea di base e allo sviluppo iterativo.

Distribuire i soli oggetti completati: è possibile escludere i file che contengono le definizioni per gli oggetti di database non ancora pronti per la distribuzione o i test.

Configurare il progetto per la compilazione: è possibile configurare le impostazioni che controllano la compilazione del progetto di database. È ad esempio possibile specificare che gli avvisi devono essere considerati errori.

Configurare il progetto per la distribuzione:

  • È possibile configurare la distribuzione per qualsiasi configurazione di compilazione associando una configurazione a un database di destinazione, a un file contenente dettagli sulla distribuzione e a un altro file contenente variabili aventi un impatto sulla distribuzione.

  • È possibile controllare i dettagli della distribuzione modificando il file che contiene i dettagli sulla distribuzione (deploymentconfig).

  • È possibile personalizzare le variabili per utilizzare Service Broker o certificati di servizio diversi in ogni distribuzione.

  • È possibile impostare l'aggiornamento delle proprietà database e server quando si distribuisce il progetto e i valori che tali proprietà devono avere.

Popolare le tabelle di ricerca o riferimento: è possibile aggiungere dati di riferimento alle tabelle quando si distribuisce il progetto di database. È possibile eseguire questa operazione per le tabelle che contengono dati che cambiano raramente, ad esempio le informazioni sugli spedizionieri.

Compilare il progetto di database: è possibile compilare il progetto di database in Visual Studio o da un prompt dei comandi con MSBuild. È possibile configurare il numero massimo di errori o avvisi e decidere di non visualizzare gli avvisi se si desidera ignorarli. È possibile eseguire azioni all'interno della compilazione, ovvero poco prima o poco dopo la compilazione del progetto di database.

Distribuire il progetto di database: è possibile distribuire il progetto di database in Visual Studio, tramite MSBuild oppure utilizzando lo strumento da riga di comando VSDBCMD per aggiornare il server o il database di destinazione. Prima di archiviare le modifiche nel progetto di database, potrebbe essere necessario verificare se sia possibile completare correttamente la distribuzione e la compilazione team.

Risolvere i problemi: è possibile ottenere ulteriori informazioni sulla risoluzione dei problemi di compilazione e distribuzione più comuni, ad esempio i problemi che possono verificarsi quando si rinominano gli assembly e i progetti Common Language Runtime (CLR) di SQL.

Passaggi successivi

Prima di archiviare le modifiche, prendere in considerazione l'esecuzione di unit test del database per verificare che il database funzioni nel modo previsto. È possibile scrivere test aggiuntivi per verificare il codice scritto. Facoltativamente, è possibile distribuire il progetto e generare dati di test quando si eseguono i test. Per ulteriori informazioni, vedere Verifica del codice del database tramite unit test.

Scenari correlati

Compilazione e distribuzione di database in un ambiente di produzione o gestione temporanea

Avvio dello sviluppo in team di database

Avvio dello sviluppo in team di database che fanno riferimento ad altri database

Avvio dello sviluppo in team di database che fanno riferimento a oggetti server condivisi

Avvio dello sviluppo in team di database che fanno riferimento a oggetti SQLCLR

Vedere anche

Concetti

Creazione e modifica di oggetti server e di database

Avvio dello sviluppo in team di database