Distribuzione di un database (VB)

di Scott Mitchell

La distribuzione di un'applicazione Web ASP.NET comporta il recupero dei file e delle risorse necessari dall'ambiente di sviluppo all'ambiente di produzione. Per le applicazioni Web guidate dai dati, sono inclusi lo schema e i dati del database. Questa esercitazione è la prima di una serie che esplora i passaggi necessari per distribuire correttamente il database dall'ambiente di sviluppo all'ambiente di produzione.

Introduzione

La distribuzione di un'applicazione Web ASP.NET comporta il recupero dei file e delle risorse necessari dall'ambiente di sviluppo all'ambiente di produzione. Nel corso delle ultime sei esercitazioni abbiamo esaminato la distribuzione di una semplice applicazione Web Book Reviews. Questo sito demo è costituito da una serie di risorse lato server, ASP.NET pagine, file di configurazione, un Web.sitemap file e così via, oltre a risorse lato client, ad esempio immagini e file CSS. Ma che ne dici delle applicazioni Web guidate dai dati? Quali passaggi aggiuntivi è necessario eseguire per distribuire un'applicazione Web che usa un database?

Nelle prossime esercitazioni verranno illustrati i passaggi necessari per distribuire un'applicazione Web guidata dai dati. Questa esercitazione inizia esaminando come ottenere lo schema e il contenuto di un database dall'ambiente di sviluppo all'ambiente di produzione, mentre l'esercitazione successiva esamina le modifiche di configurazione necessarie. In seguito verranno esaminate le problematiche di distribuzione di un database che usa i servizi applicazione (appartenenza, ruoli, profilo e così via).

Esame dell'applicazione Web Revisioni libro aggiornate

Per illustrare la distribuzione di un'applicazione Web guidata dai dati, ho aggiornato l'applicazione Web Book Reviews da un sito Web statico semplice a uno basato sui dati. Come in precedenza, in questa esercitazione sono disponibili due versioni dell'applicazione: una che usa il modello Progetto applicazione Web e una che usa il modello Progetto sito Web.

L'applicazione Web Book Reviews aggiornata usa un database Express Edition SQL Server 2008, archiviato nella cartella del App_Data sito (~/App_Data/Reviews.mdf). Se nel computer è installato SQL Server 2008, la demo dovrebbe essere eseguita senza errori. Se si dispone di una versione precedente di SQL Server è possibile installare la versione gratuita SQL Server 2008 Express Edition oppure usare gli script di database disponibili in questa esercitazione per creare manualmente il database.

Il Reviews.mdf database contiene quattro tabelle:

  • Genres - include un record per ogni genere, ad esempio Tecnologia, Fiction e Business.
  • Books : include un record per ogni revisione, con colonne come Title, GenreId, ReviewDatee Review, tra le altre.
  • Authors - include informazioni su ogni autore che ha contribuito a un libro recensito.
  • BooksAuthors - una tabella join molti-a-molti che specifica gli autori che hanno scritto i libri.

La figura 1 mostra un diagramma ER di queste quattro tabelle.

Il database dell'applicazione Web Book Reviews è costituito da quattro tabelle

Figura 1: Il database dell'applicazione Web Book Reviews è costituito da quattro tabelle (fare clic per visualizzare l'immagine a dimensione intera)

La versione precedente del sito Web Recensioni libro aveva una pagina ASP.NET separata per ogni libro. Ad esempio, c'era una pagina denominata ~/Tech/TYASP35.aspx che conteneva la recensione per Teach Yourself ASP.NET 3,5 in 24 ore. Questa nuova versione guidata dai dati del sito Web include le recensioni archiviate nel database e una singola pagina ASP.NET, Review.aspx?ID=bookId, che visualizza la recensione per il libro specificato. Analogamente, esiste una pagina Genre.aspx?ID=genreId che elenca i libri esaminati nel genere specificato.

Le figure 2 e 3 mostrano le Genre.aspx pagine e Review.aspx in azione. Prendere nota dell'URL nella barra degli indirizzi per ogni pagina. Nella figura 2 è Genre.aspx?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e. Poiché 85d164ba-1123-4c47-82a0-c8ec75de7e0e è il GenreId valore per il genere Tecnologico, l'intestazione della pagina legge "Technology Reviews" e l'elenco puntato enumera le recensioni nel sito che rientrano in questo genere.

Pagina Genere tecnologia

Figura 2: Pagina Genere tecnologia (fare clic per visualizzare l'immagine a dimensione intera)

La recensione per Insegnare a se stessi ASP.NET 3,5 in 24 ore

Figura 3: La revisione per Insegnare a se stessi ASP.NET 3.5 in 24 ore (fare clic per visualizzare l'immagine a dimensione intera)

L'applicazione Web Book Reviews include anche una sezione di amministrazione in cui gli amministratori possono aggiungere, modificare ed eliminare generi, recensioni e informazioni sull'autore. Attualmente, qualsiasi visitatore può accedere alla sezione di amministrazione. In un'esercitazione futura si aggiungerà il supporto per gli account utente e si consentirà solo agli utenti autorizzati nelle pagine di amministrazione.

Se si scarica l'applicazione Book Reviews, tenere presente che lo scopo è quello di dimostrare la distribuzione di un'applicazione guidata dai dati. Non presenta procedure consigliate per quanto riguarda la progettazione dell'applicazione. Ad esempio, non esiste un livello di accesso ai dati separato (DAL); le pagine ASP.NET comunicano direttamente con il database tramite il controllo SqlDataSource o ADO.NET codice nelle classi code-behind. Per un'analisi più approfondita sulla creazione di applicazioni guidate dai dati usando un'architettura a livelli, vedere le esercitazioni sull'uso dei dati.

Database in fase di sviluppo e produzione

Quando si avvia lo sviluppo in un'applicazione Web guidata dai dati, è necessario specificare un database stringa di connessione, che fornisce i dettagli dell'applicazione su come connettersi al database. Questa stringa di connessione specifica, tra le altre cose, il server di database, il nome del database e le informazioni di sicurezza. Spesso, il database usato dall'applicazione durante lo sviluppo è diverso dal database usato durante l'ambiente di produzione. L'uso di database diversi per lo sviluppo e la produzione offre molti vantaggi. Avere un database diverso nello sviluppo significa che non è necessario preoccuparsi di modificare accidentalmente o eliminare dati in tempo reale. Consente inoltre di inserire dati fittizi di test o apportare modifiche di rilievo al modello di dati senza doversi preoccupare degli effetti sull'applicazione nell'ambiente di produzione. Lo svantaggio di avere un database diverso negli ambienti di sviluppo e di produzione è che quando l'applicazione viene distribuita nel database e devono essere distribuite anche eventuali modifiche pertinenti allo schema o ai dati del database.

Prima della prima distribuzione, è presente una sola istanza del database e tale istanza si trova nell'ambiente di sviluppo. Quando si distribuisce l'applicazione nell'ambiente di produzione per la prima volta, è necessario non solo copiare i file lato server e lato client necessari, ma anche copiare il database dall'ambiente di sviluppo all'ambiente di produzione. Questo è il punto in cui ci troviamo subito con l'applicazione Web Book Reviews: il database si trova nella App_Data cartella nell'ambiente di sviluppo, ma non è ancora stato eseguito il push nell'ambiente di produzione.

Dopo che l'applicazione è stata distribuita, sono presenti due copie del database. Con la maturità dell'applicazione, è possibile aggiungere nuove funzionalità, richiedere una modifica al modello di dati, ad esempio l'aggiunta di nuove colonne alle tabelle esistenti, l'aggiunta di nuove tabelle e così via. Quando l'applicazione Web viene distribuita successivamente, le modifiche applicate al database nell'ambiente di sviluppo dal momento che l'ultima distribuzione deve essere applicata al database di produzione. Alcune strategie per la gestione di questo processo vengono illustrate in un'esercitazione futura. Questa esercitazione è incentrata sulla distribuzione dell'intero database dall'ambiente di sviluppo all'ambiente di produzione.

Distribuzione del database nell'ambiente di produzione

Nella parte restante di questa esercitazione viene illustrato come distribuire il database dall'ambiente di sviluppo all'ambiente di produzione. Se si segue, è necessario assicurarsi che l'account con il provider host Web includa il supporto del database di Microsoft SQL Server. Sarà anche necessario disporre di alcune informazioni, ovvero il nome del server di database, il nome del database e il nome utente e la password usati per connettersi al database.

Come indicato in precedenza in questa esercitazione, il database del sito Web Book Reviews è un database express edition SQL Server 2008 archiviato nella App_Data cartella . Si tratterebbe del motivo per cui la distribuzione di un database di questo tipo sarebbe semplice come copiare la App_Data cartella dall'ambiente di sviluppo all'ambiente di produzione. Tuttavia, la maggior parte dei provider host Web non supporta l'hosting di database nella App_Data cartella a causa di motivi di sicurezza. Gli host Web forniscono invece un account in un server di database SQL Server all'interno del proprio ambiente. La distribuzione del database dall'ambiente di sviluppo all'ambiente di produzione richiede la registrazione del database nel server di database dell'host Web.

Come si ottiene quindi il database dall'ambiente di sviluppo all'ambiente di produzione? Esistono due modi per eseguire questa operazione a seconda dei servizi offerti dall'host Web. Con alcuni host, ad esempio DiscountASP.NET, è possibile eseguire il backup del database o il file effettivo .mdf nel sito Web e quindi, dal Pannello di controllo, ripristinare il file di backup o allegare il .mdf file al server di database SQL Server. Con tali strumenti la distribuzione del database è semplice come copiare la App_Data cartella nell'ambiente di produzione e quindi collegarla tramite il Pannello di controllo. Questo è forse il modo più semplice e rapido per pubblicare il database per la prima volta.

Un altro approccio consiste nell'usare la Pubblicazione guidata database. La Pubblicazione guidata database è un'applicazione desktop di Windows che genererà i comandi SQL per creare lo schema del database, ovvero tabelle, stored procedure, viste, funzioni definite dall'utente e così via e, facoltativamente, i dati nelle relative tabelle. È quindi possibile connettersi al server di database del provider host Web tramite SQL Server Management Studio e quindi eseguire questo script per duplicare il database nell'ambiente di produzione. Ancora meglio, se il provider host Web supporta Servizi pubblicazione database di Microsoft, è possibile che lo script generato dalla Pubblicazione guidata database venga eseguito automaticamente nel server di database per conto dell'utente. Poiché la Pubblicazione guidata database genera uno script che crea lo schema e i dati del database, funziona indipendentemente dal fatto che il provider host Web offra funzionalità come il collegamento di un file caricato .mdf .

Generazione dei comandi SQL per creare lo schema e i dati del database tramite la Pubblicazione guidata database

Eseguire una procedura dettagliata usando la Pubblicazione guidata database per distribuire il database Book Reviews nell'ambiente di produzione. Se si usa Visual Studio 2008 o versione successiva, la Pubblicazione guidata database è già installata.

Aprire Visual Studio e passare al Reviews.mdf database. Se si usa Visual Web Developer, passare a Esplora database; se si usa Visual Studio, usare Esplora server. La figura 4 mostra il Reviews.mdf database in Esplora database in Visual Web Developer. Come illustrato nella figura 4, il Reviews.mdf database è composto da quattro tabelle, tre stored procedure e una funzione definita dall'utente.

Individuare il database in Esplora database o Esplora server

Figura 4: Individuare il database in Esplora database o Esplora server (fare clic per visualizzare l'immagine a dimensione intera)

Fare clic con il pulsante destro del mouse sul nome del database e scegliere l'opzione "Pubblica nel provider" dal menu di scelta rapida. Verrà avviata la Pubblicazione guidata database (vedere la figura 5). Fare clic su Avanti per passare oltre la schermata iniziale.

Screenshot della finestra Pubblicazione guidata database, che mostra la schermata iniziale e il pulsante Avanti per avanzare la procedura guidata.

Figura 5: Schermata iniziale della Pubblicazione guidata database (fare clic per visualizzare l'immagine a dimensione intera)

La seconda schermata della procedura guidata elenca i database accessibili alla Pubblicazione guidata database e consente di scegliere se creare uno script di tutti gli oggetti nel database selezionato o scegliere quali oggetti eseguire lo script. Selezionare il database appropriato e lasciare selezionata l'opzione "Script tutti gli oggetti nel database selezionato".

Nota

Se viene visualizzato l'errore "Non sono presenti oggetti nel database databaseName dei tipi scriptabili da questa procedura guidata" quando si fa clic su Avanti nella schermata visualizzata nella figura 6, assicurarsi che il percorso del file di database non sia troppo lungo. Questo errore può verificarsi se il percorso del file di database è troppo lungo.

Screenshot della finestra Pubblicazione guidata database, che mostra un database evidenziato nell'elenco e una casella di controllo Script tutti gli oggetti compilati.

Figura 6: Schermata iniziale pubblicazione guidata database (fare clic per visualizzare l'immagine full-size)

Dalla schermata successiva è possibile generare un file di script o, se l'host Web lo supporta, pubblicare il database direttamente nel server di database del provider host Web. Come illustrato nella figura 7, lo script scritto nel file C:\REVIEWS.MDF.sql.

Creare uno script del database in un file o pubblicarlo direttamente nel provider host Web

Figura 7: Creare uno script del database in un file o pubblicarlo direttamente nel provider host Web (fare clic per visualizzare l'immagine full-size)

La schermata successiva richiede diverse opzioni di scripting. È possibile specificare se lo script deve includere istruzioni di eliminazione per rimuovere questi oggetti esistenti. Questo valore predefinito viene impostato su True, che è corretto quando si distribuisce un database per la prima volta. È anche possibile specificare se il database di destinazione è SQL Server 2000, SQL Server 2005 o SQL Server 2008. Infine, è possibile indicare se creare uno script dello schema e dei dati, solo i dati o semplicemente lo schema. Lo schema è la raccolta di oggetti di database, le tabelle, le stored procedure, le viste e così via. I dati sono le informazioni che risiedono nelle tabelle.

Come illustrato nella figura 8, è stata configurata la procedura guidata per eliminare gli oggetti di database esistenti, per generare script per un database SQL Server 2008 e per pubblicare sia lo schema che i dati.

Specificare le opzioni di pubblicazione

Figura 8: Specificare le opzioni di pubblicazione (fare clic per visualizzare l'immagine full-size)

Le due schermate finali riepilogano le azioni che stanno per essere eseguite e quindi visualizzano lo stato dello scripting. Il risultato netto dell'esecuzione della procedura guidata è che è presente un file di script che contiene i comandi SQL necessari per creare il database nell'ambiente di produzione e popolarlo con gli stessi dati dello sviluppo.

Esecuzione dei comandi SQL nel database dell'ambiente di produzione

Ora che è disponibile lo script che contiene i comandi SQL per creare il database e i relativi dati che rimangono per eseguire lo script nel database di produzione. Alcuni provider di host Web offrono una casella di testo nella relativa Pannello di controllo in cui è possibile immettere i comandi SQL da eseguire nel database. Se si dispone di un file di script molto grande, questa opzione potrebbe non funzionare (il REVIEWS.MDF.sql file di script è superiore a 425 KB di dimensioni, ad esempio).

Un approccio migliore consiste nel connettersi direttamente al server di database di produzione usando SQL Server Management Studio (SSMS). Se si dispone di un'edizione non Express di SQL Server installata nel computer, è probabile che sia già installato SSMS. In caso contrario, è possibile scaricare e installare una copia gratuita di SQL Server Management Studio Express Edition.

Avviare SSMS e connettersi al server di database dell'host Web usando le informazioni fornite dal provider host Web.

Screenshot della finestra di dialogo Connetti al server, che mostra le informazioni sul server dati dell'host Web nei campi di testo.

Figura 9: Connettersi al server di database del provider host Web (fare clic per visualizzare l'immagine full-size)

Espandere la scheda Database e individuare il database. Fare clic sul pulsante Nuova query nell'angolo superiore sinistro della barra degli strumenti, incollare nei comandi SQL dal file di script creato dalla Pubblicazione guidata database e fare clic sul pulsante Esegui per eseguire questi comandi nel server di database di produzione. Se il file di script è particolarmente grande, potrebbe richiedere diversi minuti per eseguire i comandi.

Screenshot della finestra Microsoft SQL Server Management Studio, che mostra i comandi dei file di script eseguiti nel server di produzione.

Figura 10: Connettersi al server di database del provider host Web (fare clic per visualizzare l'immagine full-size)

È tutto lì! A questo punto il database di sviluppo è stato duplicato in produzione. Se si aggiorna il database in SSMS, è necessario visualizzare i nuovi oggetti di database. La figura 11 mostra le tabelle, le stored procedure e le funzioni definite dall'utente del database di produzione, che rispecchiano quelle nel database di sviluppo. Poiché è stata descritta la Pubblicazione guidata database per pubblicare i dati, le tabelle del database di produzione hanno gli stessi dati delle tabelle del database di sviluppo al momento dell'esecuzione della procedura guidata. La figura 12 mostra i dati nella tabella nel Books database di produzione.

Gli oggetti di database sono stati duplicati nel database di produzione

Figura 11: Gli oggetti di database sono stati duplicati nel database di produzione (fare clic per visualizzare l'immagine full-size)

Il database di produzione contiene gli stessi dati del database di sviluppo

Figura 12: Il database di produzione contiene gli stessi dati del database di sviluppo (fare clic per visualizzare l'immagine full-size)

A questo punto è stato distribuito solo il database di sviluppo nell'ambiente di produzione. Non è ancora stato esaminato la distribuzione dell'applicazione Web stessa o si è esaminato quali modifiche di configurazione sono necessarie per avere l'applicazione in produzione usare il database di produzione. Questi problemi verranno illustrati nell'esercitazione successiva.

Riepilogo

La distribuzione di un'applicazione Web basata sui dati richiede la copia del database usato durante lo sviluppo nell'ambiente di produzione. Molti provider di host Web offrono strumenti per semplificare il processo di distribuzione di un database. Ad esempio, con DiscountASP.NET è possibile FTP il file di database (o un backup) e quindi collegare il database al server di database .mdf dal Pannello di controllo. Un'altra opzione che funziona indipendentemente dalle funzionalità offerte dal provider host Web è lo strumento Creazione guidata pubblicazione database Microsoft, che genera uno script di comandi SQL per creare lo schema e i dati del database di sviluppo. Dopo aver generato questo script, è possibile eseguirlo nel database di produzione.

Ora che il database dell'applicazione Web Book Reviews è in produzione, è possibile distribuire l'applicazione. Tuttavia, le informazioni di configurazione dell'applicazione Web specificano il stringa di connessione al database e che stringa di connessione fa riferimento al database di sviluppo. È necessario aggiornare queste informazioni stringa di connessione durante la distribuzione del sito in produzione. L'esercitazione successiva esamina queste differenze di configurazione e illustra i passaggi necessari per pubblicare il sito Recensioni libro basate sui dati nell'ambiente di produzione.

Programmazione felice!

Altre informazioni

Per altre informazioni sugli argomenti descritti in questa esercitazione, vedere la risorsa seguente: