Condividi tramite


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 il deployment di una semplice applicazione web di recensioni di libri. Questo sito dimostrativo è costituito da una serie di risorse lato server, ASP.NET pagine, file di configurazione, un Web.sitemap file e così via, insieme alle risorse lato client, ad esempio immagini e file CSS. Ma che ne dici delle applicazioni Web guidate dai dati? Quali passaggi aggiuntivi devono essere eseguiti 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. Dopo aver esaminato le problematiche della distribuzione di un database che usa i servizi applicazione (appartenenza, ruoli, profilo e così via).

Analisi dell'applicazione Web Recensioni di libri aggiornate

Per illustrare la distribuzione di un'applicazione Web guidata dai dati, ho aggiornato l'applicazione Web Book Reviews da un sito Web semplice statico a un sito Web 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 Revisioni Libro aggiornata utilizza un database SQL Server 2008 Express Edition, archiviato nella cartella del sito App_Data (~/App_Data/Reviews.mdf). Se nel computer è installato SQL Server 2008, la demo deve essere eseguita senza errori. Se si ha una versione precedente di SQL Server, è possibile installare la versione gratuita di 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 registro per ogni revisione, con colonne come Title, GenreId, ReviewDate e Review, tra cui altre.
  • Authors - include informazioni su ogni autore che ha contribuito a un libro esaminato.
  • BooksAuthors - una tabella di join molti-a-molti che specifica quali autori hanno scritto quali 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 di Teach Yourself ASP.NET 3,5 in 24 ore. Questa nuova versione basata sui 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 dimostrano le pagine Genre.aspx 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 la categoria Tecnologia, l'intestazione della pagina riporta "Recensioni di Tecnologia" e l'elenco puntato indica le recensioni sul sito che rientrano in questa categoria.

Pagina del Genere Tecnologia

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

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

Figura 3: La recensione per insegnare 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 futuro tutorial aggiungeremo il supporto per gli account utente e consentiremo solo agli utenti autorizzati l'accesso alle pagine di amministrazione.

Se si scarica l'applicazione Recensioni libro, 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 della 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 una stringa di connessione al database, 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. In genere, il database usato dall'applicazione durante lo sviluppo è diverso dal database usato durante l'ambiente di produzione. Esistono molti vantaggi dell'uso di database diversi per lo sviluppo e la produzione. Avere un database diverso in fase di sviluppo significa che non è necessario preoccuparsi di modificare accidentalmente o eliminare dati in tempo reale. Consente inoltre di inserire dati di test fittizi 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 produzione è che quando l'applicazione viene distribuita il database ed eventuali modifiche pertinenti allo schema o ai dati del database devono essere distribuiti.

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, non è necessario solo copiare i file sul lato server e sul lato client necessari, ma anche copiare il database dall'ambiente di sviluppo all'ambiente di produzione. Questo è il punto in cui ci troviamo ora 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 aver distribuito l'applicazione sono presenti due copie del database. Man mano che l'applicazione matura, è possibile aggiungere nuove funzionalità, richiedendo una modifica al modello di dati , ad esempio aggiungendo nuove colonne alle tabelle esistenti, apportando modifiche alle colonne esistenti, aggiungendo nuove tabelle e così via. Quando l'applicazione Web viene distribuita successivamente, le modifiche applicate al database nell'ambiente di sviluppo dopo l'ultima distribuzione devono essere applicate 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 stai seguendo questa procedura, è necessario assicurarsi che il tuo account con il provider di hosting web includa il supporto per il database di Microsoft SQL Server. Sarà anche necessario disporre di alcune informazioni, ad esempio 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 delle recensioni di libri è un database di SQL Server 2008 Express Edition archiviato nella cartella App_Data. Sarebbe logico pensare che la distribuzione di un database di questo tipo sia semplice come trasferire la cartella App_Data 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 di SQL Server all'interno del proprio ambiente. Per distribuire il database dall'ambiente di sviluppo all'ambiente di produzione è necessario registrare il 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 ftp di un backup del database o del 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 di SQL Server. Con questi strumenti che distribuiscono il 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. 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. Anche meglio, se il provider host Web supporta i servizi di pubblicazione del database Microsoft, lo script generato dal Database Publishing Wizard può essere eseguito automaticamente nel server di database per conto dell'utente. Poiché la Creazione guidata per la pubblicazione di database genera uno script che crea lo schema e i dati del database, funzionerà a prescindere dal fatto che il provider di hosting web offra funzionalità come l'associazione di un file caricato .mdf.

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

Facciamo una panoramica sull'uso della Procedura guidata di pubblicazione del database per distribuire il database delle recensioni dei libri nell'ambiente di produzione. Se si utilizza Visual Studio 2008 o versione successiva, il Database Publishing Wizard è già installato.

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 nell'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.

Individua 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 Procedura guidata per la pubblicazione del database, che mostra la schermata iniziale e il pulsante Avanti per avanzare nella procedura guidata.

Figura 5: Schermata iniziale della Procedura guidata per la pubblicazione dei database (fare clic per visualizzare l'immagine a grandezza naturale)

La seconda schermata della procedura guidata elenca i database accessibili alla Procedura guidata pubblicazione database e consente di scegliere se generare script per tutti gli oggetti nel database selezionato o selezionare gli oggetti da generare tramite scripting. Selezionare il database appropriato e lasciare selezionata l'opzione "Script tutti gli oggetti nel database selezionato".

Annotazioni

Se viene visualizzato l'errore "Non ci sono oggetti nel database databaseName dei tipi scriptabili da questa procedura guidata" quando si fa clic su Avanti nella schermata illustrata 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 compilata.

Figura 6: Schermata di avvio della Creazione guidata di pubblicazione del database (fare clic per visualizzare l'immagine a dimensione intera)

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 viene 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 a dimensione intera)

La schermata successiva richiede un'ampia gamma di opzioni di scripting. È possibile specificare se lo script deve includere istruzioni drop per rimuovere questi oggetti esistenti. L'impostazione predefinita è True, che è corretta 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 solo lo schema. Lo schema è la raccolta di oggetti di database, tabelle, stored procedure, 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, generare script per un database di SQL Server 2008 e 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 a dimensione intera)

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 è disponibile 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

Dopo aver creato lo script che contiene i comandi SQL per creare il database e i relativi dati, è necessario eseguire lo script nel database di produzione. Alcuni provider host Web offrono una casella di testo nel 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 ha dimensioni superiori a 425 KB, ad esempio).

Un approccio migliore consiste nel connettersi direttamente al server di database di produzione usando SQL Server Management Studio (SSMS). Se nel computer è installata un'edizione non Express di SQL Server, è 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 a dimensione intera)

Espandi la scheda delle Database e individua il tuo database. Fare clic sul pulsante Nuova query nell'angolo superiore sinistro della barra degli strumenti, incollare i comandi SQL del 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, potrebbero essere necessari alcuni minuti per eseguire i comandi.

Screenshot della finestra di 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 a dimensione intera)

Ecco fatto! A questo punto il database di sviluppo è stato duplicato nell'ambiente di produzione. Se si aggiorna il database in SSMS, verranno visualizzati 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. Inoltre, poiché la Procedura guidata di pubblicazione del database è stata istruita a 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 Books del 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 a dimensione intera)

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 a dimensione intera)

A questo punto è stato distribuito solo il database di sviluppo nell'ambiente di produzione. Non è stata ancora esaminata la distribuzione dell'applicazione Web stessa o sono state esaminate le modifiche di configurazione necessarie per fare in modo che l'applicazione nell'ambiente di produzione usi il database di produzione. Questi problemi verranno illustrati nell'esercitazione successiva.

Sommario

La distribuzione di un'applicazione Web guidata dai 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 eseguire il ftp del file di database .mdf (o un backup) e quindi collegare il database al server di database dal Pannello di controllo. Un'altra opzione che funziona indipendentemente dalle funzionalità offerte dal provider di host Web è lo strumento pubblicazione guidata database di 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 la stringa di connessione al database e tale stringa di connessione fa riferimento al database di sviluppo. È necessario aggiornare queste informazioni sulla stringa di connessione durante la distribuzione del sito nell'ambiente di 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.

Buon programmatori!

Altre informazioni

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