Condividi tramite


Distribuzione di un'applicazione Web ASP.NET con SQL Server Compact tramite Visual Studio o Visual Web Developer: Migrazione a SQL Server - 10 di 12

di Tom Dykstra

Scaricare il progetto iniziale

Questa serie di esercitazioni illustra come distribuire (pubblicare) un progetto di applicazione Web ASP.NET che include un database SQL Server Compact usando Visual Studio 2012 RC o Visual Studio Express 2012 RC per Web. È anche possibile usare Visual Studio 2010 se si installa l'aggiornamento di pubblicazione Web. Per un'introduzione alla serie, vedere la prima esercitazione della serie.

Per un'esercitazione che illustra le funzionalità di distribuzione introdotte dopo la versione RC di Visual Studio 2012, illustra come distribuire edizioni SQL Server diverse da SQL Server Compact e illustra come eseguire la distribuzione in Servizio app di Azure App Web, vedere ASP.NET distribuzione Web con Visual Studio.

Panoramica

Questa esercitazione illustra come eseguire la migrazione da SQL Server Compact a SQL Server. Un motivo per cui è consigliabile eseguire questa operazione è sfruttare le funzionalità di SQL Server che SQL Server Compact non supporta, ad esempio stored procedure, trigger, viste o replica. Per altre informazioni sulle differenze tra SQL Server Compact e SQL Server, vedere l'esercitazione Sulla distribuzione di SQL Server Compact.

SQL Server Express e SQL Server completi per lo sviluppo

Dopo aver deciso di eseguire l'aggiornamento a SQL Server, è possibile usare SQL Server o SQL Server Express negli ambienti di sviluppo e test. Oltre alle differenze nel supporto degli strumenti e nelle funzionalità del motore di database, esistono differenze nelle implementazioni del provider tra SQL Server Compact e altre versioni di SQL Server. Queste differenze possono causare la generazione dello stesso codice di risultati diversi. Pertanto, se si decide di mantenere SQL Server Compact come database di sviluppo, è necessario testare accuratamente il sito in SQL Server o SQL Server Express in un ambiente di test prima di ogni distribuzione nell'ambiente di produzione.

A differenza di SQL Server Compact, SQL Server Express è essenzialmente lo stesso motore di database e usa lo stesso provider .NET del SQL Server completo. Quando si esegue il test con SQL Server Express, è possibile ottenere gli stessi risultati ottenuti con SQL Server. È possibile usare la maggior parte degli stessi strumenti di database con SQL Server Express che è possibile usare con SQL Server (un'eccezione notevole SQL Server Profiler) e supporta altre funzionalità di SQL Server come stored procedure, viste, trigger e replica. In genere è necessario usare SQL Server completi in un sito Web di produzione. SQL Server Express può essere eseguito in un ambiente di hosting condiviso, ma non è stato progettato per questo e molti provider di hosting non lo supportano.

Se si usa Visual Studio 2012, in genere si sceglie SQL Server Express LocalDB per l'ambiente di sviluppo, perché questo è ciò che viene installato per impostazione predefinita con Visual Studio. Tuttavia, LocalDB non funziona in IIS, quindi per l'ambiente di test è necessario usare SQL Server o SQL Server Express.

Combinazione di database e mantenimento dei valori separati

L'applicazione Contoso University ha due database SQL Server Compact: il database di appartenenza (aspnet.sdf) e il database dell'applicazione (School.sdf). Quando si esegue la migrazione, è possibile eseguire la migrazione di questi database a due database separati o a un database singolo. È possibile combinarli per facilitare i join di database tra il database dell'applicazione e il database di appartenenza. Il piano di hosting potrebbe anche fornire un motivo per combinarli. Ad esempio, il provider di hosting potrebbe richiedere più database o non consentire più di un database. Questo è il caso dell'account di hosting Cytanium Lite usato per questa esercitazione, che consente solo un singolo database SQL Server.

In questa esercitazione si eseguirà la migrazione dei due database in questo modo:

  • Eseguire la migrazione a due database LocalDB nell'ambiente di sviluppo.
  • Eseguire la migrazione a due database SQL Server Express nell'ambiente di test.
  • Eseguire la migrazione a un database SQL Server completo combinato nell'ambiente di produzione.

Promemoria: se viene visualizzato un messaggio di errore o qualcosa che non funziona durante l'esercitazione, assicurarsi di controllare la pagina di risoluzione dei problemi.

Installazione di SQL Server Express

SQL Server Express viene installato automaticamente per impostazione predefinita con Visual Studio 2010, ma per impostazione predefinita non è installato con Visual Studio 2012. Per installare SQL Server 2012 Express, fare clic sul collegamento seguente

Scegliere ENU/x64/SQLEXPR_x64_ENU.exe o ENU/x86/SQLEXPR_x86_ENU.exee nell'installazione guidata accettare le impostazioni predefinite. Per altre informazioni sulle opzioni di installazione, vedere Installare SQL Server 2012 dall'Installazione guidata (programma di installazione).

Creazione di database SQL Server Express per l'ambiente di test

Il passaggio successivo consiste nel creare i database di appartenenza ASP.NET e dell'istituto di istruzione.

Dal menu Visualizza selezionare Esplora server (Esplora database in Visual Web Developer) e quindi fare clic con il pulsante destro del mouse su Data Connections e scegliere Crea nuovo database SQL Server.

Selecting_Create_New_SQL_Server_Database

Nella finestra di dialogo Crea nuovo database SQL Server immettere ".\SQLExpress" nella casella Nome server e "aspnet-Test" nella casella Nuovo nome database, quindi fare clic su OK.

Create_New_SQL_Server_Database_aspnet

Seguire la stessa procedura per creare un nuovo database SQL Server Express School denominato "School-Test".

Si aggiunge "Test" a questi nomi di database perché in seguito si creerà un'istanza aggiuntiva di ogni database per l'ambiente di sviluppo ed è necessario essere in grado di distinguere i due set di database.

Esplora server mostra ora i due nuovi database.

New_databases_in_Server_Explorer

Creazione di uno script di concessione per i nuovi database

Quando l'applicazione viene eseguita in IIS nel computer di sviluppo, l'applicazione accede al database usando le credenziali del pool di applicazioni predefinito. Per impostazione predefinita, tuttavia, l'identità del pool di applicazioni non dispone dell'autorizzazione per aprire i database. È quindi necessario eseguire uno script per concedere tale autorizzazione. In questa sezione viene creato lo script che verrà eseguito in un secondo momento per assicurarsi che l'applicazione possa aprire i database durante l'esecuzione in IIS.

Nella cartella SolutionFiles della soluzione creata nell'esercitazione Distribuzione nell'ambiente di produzione creare un nuovo file SQL denominato Grant.sql. Copiare i comandi SQL seguenti nel file e quindi salvare e chiudere il file:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Nota

Questo script è progettato per funzionare con SQL Server 2008 e con le impostazioni di IIS in Windows 7 come sono specificate in questa esercitazione. Se si usa una versione diversa di SQL Server o di Windows o se si configura IIS nel computer in modo diverso, potrebbe essere necessario apportare modifiche a questo script. Per altre informazioni sugli script di SQL Server, vedere SQL Server documentazione online.

Nota

Nota sulla sicurezza Questo script concede db_owner autorizzazioni all'utente che accede al database in fase di esecuzione, ovvero ciò che si avrà nell'ambiente di produzione. In alcuni scenari può essere necessario specificare un utente con autorizzazioni complete di aggiornamento dello schema del database solo per la distribuzione e specificare per l'esecuzione un utente diverso che dispone delle autorizzazioni solo per la lettura e la scrittura dei dati. Per altre informazioni, vedere Revisione delle modifiche Web.config automatiche per Migrazioni Code First in Distribuzione in IIS come ambiente di test.

Configurazione della distribuzione del database per l'ambiente di test

Successivamente, si configurerà Visual Studio in modo da eseguire le attività seguenti per ogni database:

  • Generare uno script SQL che crea la struttura del database di origine (tabelle, colonne, vincoli e così via) nel database di destinazione.
  • Generare uno script SQL che inserisce i dati del database di origine nelle tabelle del database di destinazione.
  • Eseguire gli script generati e lo script Grant creato nel database di destinazione.

Aprire la finestra Proprietà progetto e selezionare la scheda Pacchetto/Pubblica SQL .

Assicurarsi che l'opzione Active (Release) o Release sia selezionata nell'elenco a discesa Configurazione .

Fare clic su Abilita questa pagina.

Package_Publish_SQL_tab_Enable_This_page

La scheda SQL pacchetto/pubblicazione è in genere disabilitata perché specifica un metodo di distribuzione legacy. Per la maggior parte degli scenari, è necessario configurare la distribuzione del database nella procedura guidata Pubblica Web . La migrazione da SQL Server Compact a SQL Server o SQL Server Express è un caso speciale per cui questo metodo è una scelta ottimale.

Fare clic su Importa da Web.config.

Selecting_Import_from_Web.config

Visual Studio cerca le stringhe di connessione nel file Web.config, ne trova uno per il database di appartenenza e uno per il database School e aggiunge una riga corrispondente a ogni stringa di connessione nella tabella Voci di database. Le stringhe di connessione trovate sono per i database SQL Server Compact esistenti e il passaggio successivo consiste nel configurare come e dove distribuire questi database.

Le impostazioni di distribuzione del database vengono immesse nella sezione Dettagli voce database sotto la tabella Voci di database . Le impostazioni visualizzate nella sezione Dettagli voce database riguardano qualsiasi riga della tabella Voci di database selezionata, come illustrato nella figura seguente.

Database_Entry_Details_section_of_Package_Publish_SQL_tab

Configurazione delle impostazioni di distribuzione per il database di appartenenza

Selezionare la riga DefaultConnection-Deployment nella tabella Voci database per configurare le impostazioni applicabili al database di appartenenza.

In Stringa di connessione per il database di destinazione immettere un stringa di connessione che punta al nuovo database di appartenenza SQL Server Express. È possibile ottenere il stringa di connessione necessario da Esplora server. In Esplora server espandere Data Connections e selezionare il database aspnetTest, quindi nella finestra Proprietà copiare il valore della stringa di connessione.

aspnet_connection_string_in_Server_Explorer

Lo stesso stringa di connessione viene riprodotto qui:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

Copiare e incollare questa stringa di connessione nella stringa di connessione per il database di destinazione nella scheda Pacchetto/Pubblica SQL.

Assicurarsi che sia selezionata l'opzione Pull data and/or schema from an existing database (Eseguire il pull dei dati e/o dello schema da un database esistente ). Questo è ciò che fa sì che gli script SQL vengano generati ed eseguiti automaticamente nel database di destinazione.

La stringa di connessione per il valore del database di origine viene estratta dal file diWeb.config e punta al database di sviluppo SQL Server Compact. Si tratta del database di origine che verrà usato per generare gli script che verranno eseguiti in un secondo momento nel database di destinazione. Poiché si vuole distribuire la versione di produzione del database, modificare "aspnet-Dev.sdf" in "aspnet-Prod.sdf".

Modificare le opzioni di scripting del database da Schema solo a Schema e dati, poiché si desidera copiare i dati (account utente e ruoli) nonché la struttura del database.

Per configurare la distribuzione per eseguire gli script di concessione creati in precedenza, è necessario aggiungerli alla sezione Script di database . Fare clic su Aggiungi script e nella finestra di dialogo Aggiungi script SQL passare alla cartella in cui è stato archiviato lo script di concessione , ovvero la cartella contenente il file di soluzione. Selezionare il file denominato Grant.sql e fare clic su Apri.

Select_File_dialog_box_grant_script

Le impostazioni per la riga DefaultConnection-Deployment nelle voci del database sono ora simili alla figura seguente:

Database_Entry_Details_for_DefaultConnection_Test

Configurazione delle impostazioni di distribuzione per il database dell'istituto di istruzione

Selezionare quindi la riga SchoolContext-Deployment nella tabella Voci di database per configurare le impostazioni di distribuzione per il database dell'istituto di istruzione.

È possibile usare lo stesso metodo usato in precedenza per ottenere il stringa di connessione per il nuovo database di SQL Server Express. Copiare questa stringa di connessione nella stringa di connessione per il database di destinazione nella scheda Package/Publish SQL.

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

Assicurarsi che sia selezionata l'opzione Pull dei dati e/o dello schema da un database esistente .

La stringa di connessione per il valore del database di origine viene estratta dal file Web.config e punta al database di sviluppo SQL Server Compact. Modificare "School-Dev.sdf" in "School-Prod.sdf" per distribuire la versione di produzione del database. Non è mai stato creato un file School-Prod.sdf nella cartella App_Data, quindi si copia il file dall'ambiente di test alla cartella App_Data nella cartella del progetto ContosoUniversity più avanti.

Modificare le opzioni di scripting del database in Schema e dati.

Si vuole anche eseguire lo script per concedere l'autorizzazione di lettura e scrittura per questo database all'identità del pool di applicazioni, quindi aggiungere il file di script Grant.sql come si è fatto per il database di appartenenza.

Al termine, le impostazioni per la riga SchoolContext-Deployment nelle voci database sono simili alla figura seguente:

Database_Entry_Details_for_SchoolContext_Test

Salvare le modifiche apportate alla scheda Package/Publish SQL .

Copiare il file School-Prod.sdf dalla cartella c:\inetpub\wwwroot\ContosoUniversity\App_Data nella cartella App_Data nel progetto ContosoUniversity.

Specifica della modalità Transacted per lo script di concessione

Il processo di distribuzione genera script che distribuiscono lo schema e i dati del database. Per impostazione predefinita, questi script vengono eseguiti in una transazione. Tuttavia, gli script personalizzati (come gli script di concessione) per impostazione predefinita non vengono eseguiti in una transazione. Se il processo di distribuzione combina le modalità di transazione, potrebbe verificarsi un errore di timeout durante l'esecuzione degli script durante la distribuzione. In questa sezione viene modificato il file di progetto per configurare gli script personalizzati da eseguire in una transazione.

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ContosoUniversity e scegliere Scarica progetto.

Unload_Project_in_Solution_Explorer

Fare quindi di nuovo clic con il pulsante destro del mouse sul progetto e selezionare Modifica ContosoUniversity.csproj.

Edit_Project_in_Solution_Explorer

L'editor di Visual Studio mostra il contenuto XML del file di progetto. Si noti che esistono diversi PropertyGroup elementi. Nell'immagine il contenuto degli PropertyGroup elementi è stato omesso.

Finestra editor file di progetto

Il primo, che non Condition ha alcun attributo, è per le impostazioni che si applicano indipendentemente dalla configurazione di compilazione. Un PropertyGroup elemento si applica solo alla configurazione di compilazione Debug (si noti l'attributo Condition ), si applica solo alla configurazione della compilazione release e una si applica solo alla configurazione della compilazione test. All'interno dell'elemento PropertyGroup per la configurazione della compilazione release, verrà visualizzato un PublishDatabaseSettings elemento contenente le impostazioni immesse nella scheda Package/Publish SQL . È presente un Object elemento che corrisponde a ognuno degli script di concessione specificati (si notino le due istanze di "Grant.sql"). Per impostazione predefinita, l'attributo dell'elemento TransactedSource per ogni script di concessione è False.

Transacted_false

Modificare il valore dell'attributo dell'elemento TransactedSource in True.

Transacted_true

Salvare e chiudere il file di progetto e quindi fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni e selezionare Ricarica progetto.

Reload_project

Configurazione delle trasformazioni Web.Config per le stringhe di connessione

Le stringhe di connessione per i nuovi database SQL Express immessi nella scheda Package/Publish SQL vengono usate solo per aggiornare il database di destinazione durante la distribuzione. È comunque necessario configurare trasformazioni Web.config in modo che le stringhe di connessione nel fileWeb.config distribuito puntino ai nuovi database SQL Server Express. Quando si usa la scheda Package/Publish SQL , non è possibile configurare le stringhe di connessione nel profilo di pubblicazione.

Aprire Web.Test.config e sostituire l'elemento con l'elemento connectionStrings nell'esempio connectionStrings seguente. Assicurarsi di copiare solo l'elemento connectionStrings, non il codice circostante visualizzato qui per fornire contesto.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Questo codice causa la sostituzione degli connectionString attributi e providerName di ogni add elemento nel file di Web.config distribuito. Queste stringhe di connessione non sono identiche a quelle immesse nella scheda Package/Publish SQL. L'impostazione "MultipleActiveResultSets=True" è stata aggiunta perché è necessaria per Entity Framework e il provider universali.

Installazione di SQL Server Compact

Il pacchetto NuGet SqlServerCompact fornisce gli assembly del motore di database SQL Server Compact per l'applicazione Contoso University. Ma ora non è l'applicazione ma la distribuzione Web che deve essere in grado di leggere i database SQL Server Compact, per creare script da eseguire nei database SQL Server. Per abilitare La distribuzione Web per leggere i database SQL Server Compact, installare SQL Server Compact nel computer di sviluppo usando il collegamento seguente: Microsoft SQL Server Compact 4.0 SP1.

Distribuzione nell'ambiente di test

Per pubblicare nell'ambiente di test, è necessario creare un profilo di pubblicazione configurato per usare la scheda Package/Publish SQL per la pubblicazione del database anziché le impostazioni del database pubblica.

Prima di tutto, eliminare il profilo di test esistente.

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ContosoUniversity e scegliere Pubblica.

Selezionare la scheda Profilo .

Fare clic su Manage Profiles (Gestisci profili).

Selezionare Test, fare clic su Rimuovi e quindi su Chiudi.

Chiudere la procedura guidata Pubblica Web per salvare questa modifica.

Creare quindi un nuovo profilo di test e usarlo per pubblicare il progetto.

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ContosoUniversity e scegliere Pubblica.

Selezionare la scheda Profilo .

Selezionare <Nuovo...> dall'elenco a discesa e immettere "Test" come nome del profilo.

Nella casella URL servizio immettere localhost.

Nella casella Sito/applicazione immettere SitoWeb predefinito/ContosoUniversity.

Nella casella URL di destinazione immettere http://localhost/ContosoUniversity/.

Fare clic su Avanti.

La scheda Impostazioni avvisa che la scheda Package/Publish SQL è stata configurata e offre l'opportunità di eseguirne l'override facendo clic su abilita i nuovi miglioramenti della pubblicazione del database. Per questa distribuzione non si vuole eseguire l'override delle impostazioni della scheda Package/Publish SQL , quindi fare clic su Avanti.

Publish_Web_wizard_Settings_tab_Migrate

Un messaggio nella scheda Anteprima indica che nessun database è selezionato per la pubblicazione, ma ciò significa che la pubblicazione del database non è configurata nel profilo di pubblicazione.

Fare clic su Pubblica.

Publish_Web_wizard_Preview_tab_Migrate

Visual Studio distribuisce l'applicazione e apre il browser alla home page del sito nell'ambiente di test. Eseguire la pagina Insegnanti per visualizzare gli stessi dati visualizzati in precedenza. Eseguire la pagina Aggiungi studenti , aggiungere un nuovo studente e quindi visualizzare il nuovo studente nella pagina Studenti . Ciò verifica che sia possibile aggiornare il database. Selezionare la pagina Aggiorna crediti (è necessario accedere) per verificare che il database di appartenenza sia stato distribuito e che sia stato eseguito l'accesso.

Creazione di un database SQL Server per l'ambiente di produzione

Dopo aver distribuito nell'ambiente di test, è possibile configurare la distribuzione in produzione. Si inizia come si è fatto per l'ambiente di test, creando un database da distribuire in. Come si ricorda dalla panoramica, il piano di hosting Cytanium Lite consente solo un singolo database SQL Server, quindi verrà configurato un solo database, non due. Tutte le tabelle e i dati dell'appartenenza e dei database dell'istituto di istruzione SQL Server Compact verranno distribuiti in un database SQL Server nell'ambiente di produzione.

Passare al pannello di controllo Cytanium in http://panel.cytanium.com. Tenere premuto il mouse su Database e quindi fare clic su SQL Server 2008.

Selecting_Databases_in_Control_Panel

Nella pagina SQL Server 2008 fare clic su Crea database.

Selecting_Create_Database

Assegnare un nome al database "School" e fare clic su Salva. La pagina aggiunge automaticamente il prefisso "contosou", quindi il nome effettivo sarà "contosouSchool".

Naming_the_database

Nella stessa pagina fare clic su Crea utente. Nei server di Cytanium, anziché usare la sicurezza integrata di Windows e consentire all'identità del pool di applicazioni di aprire il database, si creerà un utente che ha l'autorità per aprire il database. Si aggiungeranno le credenziali dell'utente alle stringhe di connessione che vanno nel file di produzione Web.config . In questo passaggio vengono create queste credenziali.

Creating_a_database_user

Compilare i campi obbligatori nella pagina Proprietà utente SQL :

  • Immettere "ContosoUniversityUser" come nome.
  • Immettere una password.
  • Selezionare contosouSchool come database predefinito.
  • Selezionare la casella di controllo contosouSchool .

SQL_User_Properties_page

Configurazione della distribuzione del database per l'ambiente di produzione

A questo punto è possibile configurare le impostazioni di distribuzione del database nella scheda Package/Publish SQL , come è stato fatto in precedenza per l'ambiente di test.

Aprire la finestra Proprietà progetto , selezionare la scheda Package/Publish SQL e assicurarsi che l'opzione Active (Release) o Release sia selezionata nell'elenco a discesa Configurazione .

Quando si configurano le impostazioni di distribuzione per ogni database, la differenza chiave tra le operazioni eseguite per gli ambienti di produzione e di test consiste nel configurare le stringhe di connessione. Per l'ambiente di test immesso stringhe di connessione di database di destinazione diverse, ma per l'ambiente di produzione l'stringa di connessione di destinazione sarà uguale per entrambi i database. Questo perché si distribuiscono entrambi i database in un database in produzione.

Configurazione delle impostazioni di distribuzione per il database di appartenenza

Per configurare le impostazioni che si applicano al database di appartenenza, selezionare la riga DefaultConnection-Deployment nella tabella Voci di database .

In Stringa di connessione per il database di destinazione immettere un stringa di connessione che punta al nuovo database di produzione SQL Server appena creato. È possibile ottenere il stringa di connessione dal messaggio di posta elettronica di benvenuto. La parte pertinente del messaggio di posta elettronica contiene l'esempio seguente stringa di connessione:

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

Dopo aver sostituito le tre variabili, il stringa di connessione necessario è simile al seguente:

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

Copiare e incollare questa stringa di connessione nella stringa di connessione per il database di destinazione nella scheda Package/Publish SQL.

Assicurarsi che i dati e/o lo schema pull da un database esistente siano ancora selezionati e che le opzioni di scripting del database siano ancora Schema e Dati.

Nella casella Script di database deselezionare la casella di controllo accanto allo script Grant.sql.

Disable_Grant_script

Configurazione delle impostazioni di distribuzione per il database dell'istituto di istruzione

Selezionare quindi la riga SchoolContext-Deployment nella tabella Voci di database per configurare le impostazioni del database dell'istituto di istruzione.

Copiare la stessa stringa di connessione nella stringa di connessione per il database di destinazione copiato in tale campo per il database di appartenenza.

Assicurarsi che i dati e/o lo schema pull da un database esistente siano ancora selezionati e che le opzioni di scripting del database siano ancora Schema e Dati.

Nella casella Script di database deselezionare la casella di controllo accanto allo script Grant.sql.

Salvare le modifiche apportate alla scheda Package/Publish SQL .

Configurazione di trasformazioni Web.Config per le stringhe di connessione ai database di produzione

Verrà quindi configurata Web.config trasformazioni in modo che le stringhe di connessione nel fileWeb.config distribuito puntino al nuovo database di produzione. Il stringa di connessione immesso nella scheda Package/Publish SQL per La distribuzione Web è uguale a quello che l'applicazione deve usare, ad eccezione dell'aggiunta dell'opzioneMultipleResultSets.

Aprire Web.Production.config e sostituire l'elemento con un connectionStrings elemento simile all'esempio connectionStrings seguente. Copiare solo l'elemento connectionStrings , non i tag circostanti forniti per visualizzare il contesto.

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

A volte viene visualizzato un consiglio che indica di crittografare sempre le stringhe di connessione nel file Web.config . Questo potrebbe essere appropriato se si sta distribuendo nei server nella rete della propria azienda. Quando si distribuisce in un ambiente di hosting condiviso, tuttavia, si considera attendibile le procedure di sicurezza del provider di hosting e non è necessario o pratico crittografare le stringhe di connessione.

Distribuzione nell'ambiente di produzione

A questo momento si è pronti per la distribuzione in produzione. Distribuzione Web leggerà i database di SQL Server Compact nella cartella App_Data del progetto e creerà nuovamente tutte le tabelle e i dati nel database di produzione SQL Server. Per pubblicare usando le impostazioni della scheda Web Package/Publish , è necessario creare un nuovo profilo di pubblicazione per l'ambiente di produzione.

Prima di tutto, eliminare il profilo di produzione esistente come è stato eseguito il profilo di test in precedenza.

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ContosoUniversity e scegliere Pubblica.

Selezionare la scheda Profilo .

Fare clic su Manage Profiles (Gestisci profili).

Selezionare Produzione, fare clic su Rimuovi e quindi fare clic su Chiudi.

Chiudere la procedura guidata Pubblica Web per salvare questa modifica.

Creare quindi un nuovo profilo di produzione e usarlo per pubblicare il progetto.

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto ContosoUniversity e scegliere Pubblica.

Selezionare la scheda Profilo .

Fare clic su Importa e selezionare il file con estensione publishsettings scaricato in precedenza.

Nella scheda Connessione modificare l'URL di destinazione nell'URL temporaneo corretto, che in questo esempio è http://contosouniversity.com.vserver01.cytanium.com.

Rinominare il profilo in Produzione. Selezionare la scheda Profilo e fare clic su Gestisci profili per eseguire questa operazione.

Chiudere la procedura guidata Pubblica Web per salvare le modifiche.

In un'applicazione reale in cui il database è stato aggiornato nell'ambiente di produzione, è necessario eseguire due passaggi aggiuntivi prima della pubblicazione:

  1. Caricare app_offline.htm, come illustrato nell'esercitazione Distribuzione nell'ambiente di produzione .
  2. Utilizzare la funzionalità Gestione file del pannello di controllo Cytanium per copiare i file aspnet-Prod.sdf e School-Prod.sdf dal sito di produzione alla cartella App_Data del progetto ContosoUniversity. Ciò garantisce che i dati distribuiti nel nuovo database SQL Server includano gli aggiornamenti più recenti apportati dal sito Web di produzione.

Nella barra degli strumenti Web One Click Publish (Pubblica ) assicurarsi che il profilo di produzione sia selezionato e quindi fare clic su Pubblica.

Se è stato caricatoapp_offline.htm prima della pubblicazione, è necessario usare l'utilità Gestione file nel pannello di controllo Cytanium per eliminare app_offline.htm prima di testare. È anche possibile eliminare contemporaneamente i file con estensione sdf dalla cartella App_Data .

È ora possibile aprire un browser e passare all'URL del sito pubblico per testare l'applicazione allo stesso modo dopo la distribuzione nell'ambiente di test.

Passaggio a SQL Server Express LocalDB nello sviluppo

Come illustrato nella panoramica, è in genere consigliabile usare lo stesso motore di database in fase di sviluppo usato in test e produzione. Tenere presente che il vantaggio di usare SQL Server Express nello sviluppo è che il database funzionerà nello stesso ambiente di sviluppo, test e produzione. In questa sezione verrà configurato il progetto ContosoUniversity per usare SQL Server Express LocalDB quando si esegue l'applicazione da Visual Studio.

Il modo più semplice per eseguire questa migrazione consiste nell'consentire a Code First e al sistema di appartenenza di creare entrambi i nuovi database di sviluppo. L'uso di questo metodo per eseguire la migrazione richiede tre passaggi:

  1. Modificare le stringhe di connessione per specificare nuovi database SQL Express LocalDB.
  2. Eseguire lo strumento di amministrazione del sito Web per creare un utente amministratore. In questo modo viene creato il database di appartenenza.
  3. Usare il comando Migrazioni Code First update-database per creare e inizializzare il database dell'applicazione.

Aggiornamento delle stringhe di connessione nel file Web.config

Aprire il file Web.config e sostituire l'elemento con il connectionStrings codice seguente:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

Creazione del database di appartenenza

In Esplora soluzioni selezionare il progetto ContosoUniversity e quindi fare clic su ASP.NET Configurazione nel menu Progetto.

Fare clic sulla scheda Sicurezza.

Fare clic su Crea o Gestisci ruoli e quindi creare un ruolo amministratore .

Tornare alla scheda Sicurezza.

Fare clic su Crea utente e quindi selezionare la casella di controllo Amministratore e creare un utente denominato amministratore.

Chiudere lo strumento di amministrazione del sito Web.

Creazione del database dell'istituto di istruzione

Aprire la finestra Console di Gestione pacchetti.

Nell'elenco a discesa Progetto predefinito selezionare il progetto ContosoUniversity.DAL.

Immettere il comando seguente:

update-database

Migrazioni Code First applica la migrazione iniziale che crea il database e quindi applica la migrazione AddBirthDate, quindi esegue il metodo Seed.

Eseguire il sito premendo Control-F5. Come si è fatto per gli ambienti di test e produzione, eseguire la pagina Aggiungi studenti , aggiungere un nuovo studente e quindi visualizzare il nuovo studente nella pagina Studenti . Ciò verifica che il database dell'istituto di istruzione sia stato creato e inizializzato e che sia stato eseguito l'accesso in lettura e scrittura.

Selezionare la pagina Aggiorna crediti e accedere per verificare che il database di appartenenza sia stato distribuito e che sia possibile accedervi. Se non è stata eseguita la migrazione degli account utente, creare un account amministratore e quindi selezionare la pagina Aggiorna crediti per verificare che funzioni.

Pulizia dei file SQL Server Compact

Non sono più necessari file e pacchetti NuGet inclusi per supportare SQL Server Compact. Se si vuole (questo passaggio non è obbligatorio), è possibile pulire i file e i riferimenti non necessari.

In Esplora soluzioni eliminare i file con estensione sdf dalla cartella App_Data e dalle cartelle amd64 e x86 dalla cartella bin.

In Esplora soluzioni fare clic con il pulsante destro del mouse sulla soluzione (non uno dei progetti) e quindi scegliere Gestisci pacchetti NuGet per la soluzione.

Nel riquadro sinistro della finestra di dialogo Gestisci pacchetti NuGet selezionare Pacchetti installati.

Selezionare il pacchetto EntityFramework.SqlServerCompact e fare clic su Gestisci.

Nella finestra di dialogo Seleziona progetti selezionare entrambi i progetti. Per disinstallare il pacchetto in entrambi i progetti, deselezionare entrambe le caselle di controllo e quindi fare clic su OK.

Nella finestra di dialogo che chiede se si desidera disinstallare anche i pacchetti dipendenti, fare clic su No. Uno di questi è il pacchetto Entity Framework che è necessario mantenere.

Seguire la stessa procedura per disinstallare il pacchetto SqlServerCompact . I pacchetti devono essere disinstallati in questo ordine perché il pacchetto EntityFramework.SqlServerCompact dipende dal pacchetto SqlServerCompact .

È stata ora eseguita la migrazione a SQL Server Express e SQL Server completa. Nell'esercitazione successiva verrà apportata un'altra modifica al database e verrà illustrato come distribuire le modifiche del database quando i database di test e produzione usano SQL Server Express e SQL Server completi.