Condividi tramite


Utilizzo di SQL Server Express Edition con ASP.NET

Aggiornamento: novembre 2007

Microsoft SQL Server 2005 Express Edition fornisce una soluzione di database semplice per la compilazione di applicazioni. SQL Server Express Edition supporta il modello di programmazione completo di SQL Server 2005, che comprende Transact-SQL, stored procedure, visualizzazioni, trigger, SQL Server CLR Integration (SQLCLR) e il tipo di dati XML. Quando si sviluppa un'applicazione utilizzando SQL Server Express Edition come origine dati, è possibile verificare che l'applicazione sia compatibile con i server di produzione su cui è in esecuzione SQL Server 2005.

Connessione a un database SQL Server Express Edition

È possibile connettersi a un database SQL Server Express Edition come se ci si connettesse a un database SQL Server, specificando il server database come origine dati locale di SQL Server Express Edition. Ad esempio, la stringa di connessione riportata di seguito consente la connessione a un database denominato Customers.

Data Source=.\SQLEXPRESS;Initial Catalog=Customers;Integrated Security=True;

È anche possibile specificare un file di database cui connettersi utilizzando l'attributo della stringa di connessione AttachDBFilename anziché gli attributi InitialCatalog o Database. La connessione al database mediante il nome di un file semplifica la distribuzione del database con l'applicazione (a condizione che sul server di destinazione sia in esecuzione SQL Server Express Edition). Ad esempio, la stringa di connessione riportata di seguito consente la connessione a un database memorizzato nel file Customers.mdf.

Data Source=.\SQLEXPRESS;AttachDbFileName=e:\data\Customers.mdf;Integrated Security=True;User Instance=True

In ASP.NET è disponibile un'efficace opzione per la memorizzazione dei dati nella directory App_Data di un'applicazione Web. Il contenuto della directory App_Data non viene visualizzato in risposta alle richieste Web e in tal modo viene migliorata la protezione dei dati dell'applicazione. Per maggiore praticità, è possibile specificare la variabile della stringa di connessione |DataDirectory| anziché il percorso file della directory App_Data dell'applicazione. Durante l'apertura di una connessione al database, le funzionalità ASP.NET, quali il controllo SqlDataSource o i provider di appartenenza, ruoli, profili utente, personalizzazione di Web part e così via, sostituiranno automaticamente il percorso file della directory App_Data con la variabile della stringa di connessione |DataDirectory|. In tal modo viene garantito che il percorso del database rimanga corrente nel caso in cui l'applicazione Web venga spostata in una diversa directory. Nell'esempio di codice riportato di seguito viene illustrata una stringa di connessione che include la variabile |DataDirectory|.

Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Customers.mdf;Integrated Security=True;User Instance=True
Nota:

Quando si effettua la connessione con una stringa di connessione in cui User Instance è impostato su true, SQL Server Express Edition consentirà una sola connessione a un file mdf.

È possibile chiudere la connessione mantenuta mediante Visual Web Developer facendo clic con il pulsante destro del mouse sul database e selezionare l'opzione Disconnetti in Esplora soluzioni o l'opzione Chiudi connessione in Esplora server. Durante l'esecuzione o il debug dell'applicazione Web, in Visual Web Developer verranno automaticamente chiuse tutte le connessioni al database aperte.

Inoltre se è necessario rilasciare eventuali connessioni aperte in un database SQL Server Express Edition, sarà possibile scaricare l'applicazione Web mediante Gestione Internet Information Services (Gestione IIS). È anche possibile scaricare un'applicazione Web aggiungendo un file HTML denominato App_offline.htm alla directory principale dell'applicazione. Per consentire all'applicazione Web di iniziare a rispondere nuovamente alle richieste Web, è sufficiente rimuovere il file App_offline.htm. Quando si desidera copiare o spostare il database in una nuova posizione, sarà necessario rilasciare le connessioni aperte in un database SQL Server Express Edition.

Configurazione di un database SQL Server Express Edition

In Visual Web Developer vengono forniti strumenti che consentono la creazione di un database SQL Server Express Edition, la gestione degli elementi di database quali tabelle, stored procedure e così via e la gestione delle connessioni al database. È possibile accedere a queste funzionalità attraverso la finestra Esplora server. Per istruzioni sulla creazione di un database SQL Server Express Edition, vedere Procedura: creare database di SQL Server Express Edition.

È inoltre possibile creare un database SQL Server Express Edition effettuando la connessione a un computer su cui è in esecuzione SQL Server Express Edition ed eseguendo un comando CREATE DATABASE oppure utilizzando gli strumenti di gestione di SQL Server forniti per SQL Server Express Edition.

Il provider predefinito per le funzionalità ASP.NET che archiviano i dati in un database SQL Server, quali l'appartenenza, i ruoli, i profili utente, la personalizzazione di Web part e così via, viene configurato per la connessione al database SQL Server Express Edition Aspnetdb.mdf nella directory App_Data dell'applicazione. Se si attiva una di queste funzionalità di archiviazione dei dati con il provider predefinito e il database SQL Server Express Edition Aspnetdb.mdf non esiste nella directory App_Data dell'applicazione, ne verrà automaticamente creato uno. Se non esiste, verrà creata anche la directory App_Data dell'applicazione.

Istanze utente

SQL Server Express Edition supporta le istanze utente, ovvero viene avviato un nuovo processo per ciascun utente che si connette a un database SQL Server Express Edition. L'identità del processo sarà rappresentata dall'utente che ha aperto la connessione. Per informazioni sulla determinazione dell'identità di un'applicazione ASP.NET, vedere Rappresentazione ASP.NET.

Quando si effettua la connessione a un progetto di database locale, per impostazione predefinita in Visual Web Developer viene effettuata la connessione al database SQL Server Express Edition con le istanze utente attivate. Nell'esempio di codice riportato di seguito viene illustrata, ad esempio, una tipica stringa di connessione utilizzata in Visual Web Developer per la connessione a un database SQL Server Express Edition.

Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Database.mdf;Integrated Security=True;User Instance=True

Anche se l'attivazione di istanze utente è indicata per lo sviluppo di applicazioni desktop, non è opportuno avviare processi di lavoro in server Web che ospitano siti di diversi clienti in cui le applicazioni devono essere separate e protette. Le applicazioni ASP.NET eseguite con la stessa identità di processo possono connettersi alla stessa istanza utente. Poiché tutte le applicazioni ASP.NET vengono eseguite con la stessa identità di processo in Windows 2000 e Windows XP Professional (per impostazione predefinita, l'account ASPNET locale) e poiché le applicazioni ASP.NET che fanno parte dello stesso pool di applicazioni vengono eseguite con la stessa identità di processo in Windows Server 2003 (per impostazione predefinita, l'account SERVIZIO DI RETE), nei server di hosting condivisi contenenti applicazioni considerate reciprocamente non attendibili dovranno essere esplicitamente disattivate le istanze utente. È possibile disattivare questa funzionalità effettuando la connessione all'istanza di SQL Server Express Edition (ad esempio, eseguendo questo comando al prompt dei comandi: osql –E –S .\SQLEXPRESS) ed eseguendo il comando Transact-SQL riportato di seguito.

EXEC sp_configure 'show advanced option', '1'

GO

RECONFIGURE WITH OVERRIDE

GO

EXEC sp_configure 'user instances enabled', 0

GO

RECONFIGURE WITH OVERRIDE

GO

Distribuzione di un database SQL Server Express Edition

Un database SQL Express Edition è composto da due file: il file mdf, contenente lo schema del database e i dati, e il file ldf, contenente le informazioni di registro del database. Quando si distribuisce un sito Web con lo strumento Copia sito Web, verranno copiati anche i file del database SQL Server Express Edition. L'applicazione continuerà a essere eseguita finché SQL Server Express Edition è installato nel server di destinazione. Per ulteriori informazioni, vedere Procedura: copiare file di siti Web con lo strumento Copia sito Web.

Di seguito sono riportate altre opzioni per la distribuzione di un database SQL Server Express Edition.

  • Se si effettua una connessione al database SQL Server Express Edition basata su file, tali file potranno essere copiati insieme all'applicazione in un server di destinazione (in cui è installato SQL Server Express Edition) mediante XCopy, FTP o altri strumenti.

  • Poiché in SQL Server Express Edition viene utilizzato lo stesso formato di file delle altre versioni di SQL Server 2005, è possibile copiare i file mdf e ldf in un server su cui è in esecuzione SQL Server e quindi collegarli come database.

  • Se si desidera copiare un database SQL Server Express Edition vuoto che contenga lo schema del database ma non i dati, gli strumenti di gestione di SQL Server consentiranno di generare script eseguibili nel database di destinazione per duplicare lo schema del database di sviluppo.

Nota:

Se si distribuisce il database SQL Server Express Edition in un server Web che ospita più siti considerati reciprocamente non attendibili, non sarà possibile utilizzare connessioni basate su file o istanze utente per assicurarsi che i dati non siano esposti ad altre applicazioni del server. In questo caso, si consiglia di migrare il contenuto del database SQL Server Express Edition in un'altra versione di SQL Server 2005 a cui l'applicazione ASP.NET distribuita può accedere.

Se nel database SQL Server Express Edition sono contenute informazioni crittografate, ad esempio password crittografate memorizzate in un database di appartenenze, accertarsi che anche le chiavi di crittografia vengano copiate nel server di destinazione.

Se si desidera spostare l'intero database SQL Server Express Edition, sarà necessario assicurarsi che non vi siano connessioni al database aperte che ne causerebbero il blocco.

Sblocco di un database bloccato

Se esiste una connessione a un database aperta, quest'ultimo viene bloccato e non è possibile spostarlo o eliminarlo. Le connessioni aperte possono essere mantenute tramite un'applicazione ASP.NET, Visual Studio o un altro programma o client di database. Per sbloccare un database, devono essere chiuse tutte le connessioni al database aperte. È possibile chiudere le connessioni aperte nei seguenti modi:

  • È possibile chiudere la connessione mantenuta mediante Visual Web Developer facendo clic con il pulsante destro del mouse sul database e selezionare l'opzione Disconnetti in Esplora soluzioni o l'opzione Chiudi connessione in Esplora server. Durante l'esecuzione o il debug dell'applicazione Web, in Visual Web Developer verranno automaticamente chiuse tutte le connessioni al database aperte.

  • È possibile chiudere tutte le connessioni mantenute tramite un'applicazione ASP.NET terminando l'applicazione. Questa operazione può essere eseguita utilizzando Gestione IIS o inserendo un file denominato App_offline.htm nella directory principale dell'applicazione ASP.NET (per riavviare l'applicazione, sarà necessario rimuovere questo file).

  • È possibile chiudere tutte le connessioni mantenute tramite altre origini, quali un'applicazione Windows Form, uscendo dal programma.

Vedere anche

Concetti

Cenni preliminari sulle proprietà dei profili ASP.NET

Altre risorse

Accesso ai dati tramite ASP.NET

Gestione di utenti tramite l'appartenenza

Gestione delle autorizzazioni tramite ruoli