Share via


Configurazione di un server di database per la pubblicazione con Distribuzione Web

di Jason Lee

Questo argomento descrive come configurare un server di database SQL Server 2008 R2 per supportare la distribuzione Web e la pubblicazione.

Le attività descritte in questo argomento sono comuni a ogni scenario di distribuzione: non è importante se i server Web sono configurati per l'uso del servizio agente remoto IIS Web Deployment Tool (Distribuzione Web), del gestore distribuzione Web o della distribuzione offline o se l'applicazione è in esecuzione in un singolo server Web o in una server farm. Il modo in cui si distribuisce il database può cambiare in base ai requisiti di sicurezza e ad altre considerazioni. Ad esempio, è possibile distribuire il database con o senza dati di esempio e distribuire mapping dei ruoli utente o configurarli manualmente dopo la distribuzione. Tuttavia, il modo in cui si configura il server di database rimane invariato.

Non è necessario installare altri prodotti o strumenti per configurare un server di database per supportare la distribuzione Web. Supponendo che il server di database e il server Web vengano eseguiti in computer diversi, è sufficiente:

  • Consentire SQL Server di comunicare tramite TCP/IP.
  • Consentire SQL Server traffico attraverso qualsiasi firewall.
  • Assegnare all'account del computer del server Web un account di accesso SQL Server.
  • Eseguire il mapping dell'account di accesso del computer a tutti i ruoli di database necessari.
  • Assegnare all'account che eseguirà la distribuzione una SQL Server autorizzazioni di accesso e autore del database.
  • Per supportare le distribuzioni ripetute, eseguire il mapping dell'account di accesso dell'account di distribuzione al ruolo del database db_owner .

In questo argomento viene illustrato come eseguire ognuna di queste procedure. Le attività e le procedure dettagliate in questo argomento presuppongono che si inizi con un'istanza predefinita di SQL Server 2008 R2 in esecuzione in Windows Server 2008 R2. Prima di continuare, assicurarsi che:

  • Sono installati Windows Server 2008 R2 Service Pack 1 e tutti gli aggiornamenti disponibili.
  • Il server è aggiunto a un dominio.
  • Il server ha un indirizzo IP statico.
  • SQL Server 2008 R2 Service Pack 1 e vengono installati tutti gli aggiornamenti disponibili.

L'istanza di SQL Server deve includere solo il ruolo Servizi motore di database, incluso automaticamente in qualsiasi installazione di SQL Server. Tuttavia, per semplificare la configurazione e la manutenzione, è consigliabile includere strumenti di gestione - Strumenti di base e strumenti di gestione - Ruoli server completi .

Nota

Per altre informazioni sull'aggiunta di computer a un dominio, vedere Aggiunta di computer al dominio e accesso. Per altre informazioni sulla configurazione di indirizzi IP statici, vedere Configurare un indirizzo IP statico. Per altre informazioni sull'installazione di SQL Server, vedere Installazione di SQL Server 2008 R2.

Abilitare l'accesso remoto a SQL Server

SQL Server usa TCP/IP per comunicare con i computer remoti. Se il server di database e il server Web si trovano in computer diversi, è necessario:

  • Configurare SQL Server impostazioni di rete per consentire la comunicazione tramite TCP/IP.
  • Configurare tutti i firewall hardware o software per consentire il traffico TCP (e in alcuni casi il traffico UDP)User Datagram Protocol (UDP) sulle porte usate dall'istanza di SQL Server.

Per consentire SQL Server di comunicare tramite TCP/IP, usare Gestione configurazione SQL Server per modificare la configurazione di rete per l'istanza di SQL Server.

Per consentire alle SQL Server di comunicare tramite TCP/IP

  1. Scegliere Tutti i programmi dal menu Start, fare clic su Microsoft SQL Server 2008 R2, scegliere Strumenti di configurazione e quindi fare clic su Gestione configurazione SQL Server.

  2. Nel riquadro della visualizzazione albero espandere SQL Server Configurazione di rete e quindi fare clic su Protocolli per MSSQLSERVER.

    Nota

    Se sono state installate più istanze di SQL Server, verrà visualizzato un elemento Protocols for[instance name] per ogni istanza. È necessario configurare le impostazioni di rete in base all'istanza.

  3. Nel riquadro dei dettagli fare clic con il pulsante destro del mouse sulla riga TCP/IP e quindi scegliere Abilita.

    Nel riquadro dei dettagli fare clic con il pulsante destro del mouse sulla riga TCP/IP, quindi scegliere Abilita

  4. Nella finestra di dialogo Avviso fare clic su OK.

    Nella finestra di dialogo Avviso fare clic su OK

  5. È necessario riavviare il servizio MSSQLSERVER prima che la nuova configurazione di rete venga applicata. È possibile eseguire questa operazione al prompt dei comandi, dalla console Servizi o da SQL Server Management Studio. In questa procedura si useranno SQL Server Management Studio.

  6. Chiudere Gestione configurazione SQL Server.

  7. Scegliere Tutti i programmi dal menu Start, fare clic su Microsoft SQL Server 2008 R2 e quindi su SQL Server Management Studio.

  8. Nella finestra di dialogo Connetti al server digitare il nome del server di database nella casella Nome server e quindi fare clic su Connetti.

    Nella finestra di dialogo Connetti al server digitare il nome del server di database nella casella Nome server e quindi fare clic su Connetti.

  9. Nel riquadro Esplora oggetti fare clic con il pulsante destro del mouse sul nodo del server padre ,ad esempio TESTDB1, quindi scegliere Riavvia.

    Nel riquadro Esplora oggetti fare clic con il pulsante destro del mouse sul nodo del server padre ,ad esempio TESTDB1, quindi scegliere Riavvia.

  10. Nella finestra di dialogo Microsoft SQL Server Management Studio fare clic su .

    Nella finestra di dialogo Microsoft SQL Server Management Studio fare clic su Sì.

  11. Al riavvio del servizio, chiudere SQL Server Management Studio.

Per consentire SQL Server traffico attraverso un firewall, è prima necessario conoscere le porte usate dall'istanza di SQL Server. Ciò dipenderà dal modo in cui è stata creata e configurata l'istanza di SQL Server:

  • Un'istanza predefinita di SQL Server è in ascolto delle richieste (e risponde) sulla porta TCP 1433.
  • Un'istanza denominata di SQL Server è in ascolto delle richieste (e risponde) su una porta TCP assegnata dinamicamente.
  • Se il servizio SQL Server Browser è abilitato, i client possono eseguire query sul servizio sulla porta UDP 1434 per scoprire quale porta TCP usare per una determinata istanza di SQL Server. Tuttavia, questo servizio viene spesso disabilitato per motivi di sicurezza.

Supponendo di usare un'istanza predefinita di SQL Server, è necessario configurare il firewall per consentire il traffico.

Direction Da porta Da convertire Tipo di porta
In ingresso Qualsiasi 1433 TCP
In uscita 1433 Qualsiasi TCP

Nota

Tecnicamente, un computer client userà una porta TCP assegnata casualmente tra 1024 e 5000 per comunicare con SQL Server ed è possibile limitare di conseguenza le regole del firewall. Per altre informazioni sulle porte e i firewall di SQL Server, vedere Numeri di porta TCP/IP necessari per comunicare con SQL tramite un firewall e Procedura: Configurare un server per l'ascolto su una porta TCP specifica (Gestione configurazione SQL Server).

Nella maggior parte degli ambienti Windows Server è probabile che sia necessario configurare Windows Firewall nel server di database. Per impostazione predefinita, Windows Firewall consente tutto il traffico in uscita, a meno che una regola non lo impedisca in modo specifico. Per consentire al server Web di raggiungere il database, è necessario configurare una regola in ingresso che consenta il traffico TCP sul numero di porta usato dall'istanza di SQL Server. Se si usa un'istanza predefinita di SQL Server, è possibile usare la procedura successiva per configurare questa regola.

Per configurare Windows Firewall per consentire la comunicazione con un'istanza di SQL Server predefinita

  1. Nel server di database scegliere Strumenti di amministrazione dal menu Start e quindi fare clic su Windows Firewall con sicurezza avanzata.

  2. Nel riquadro della visualizzazione albero fare clic su Regole in ingresso.

    Nel riquadro della visualizzazione albero fare clic su Regole in ingresso.

  3. Nel riquadro Azioni , in Regole in ingresso, fare clic su Nuova regola.

  4. Nella pagina Tipo di regola della Creazione guidata nuova regola in ingresso selezionare Porta e quindi fare clic su Avanti.

    Nella pagina Tipo di regola della Creazione guidata nuova regola in ingresso selezionare Porta e quindi fare clic su Avanti.

  5. Nella pagina Protocollo e porte verificare che TCP sia selezionato e nella casella Porte locali specifiche digitare 1433 e quindi fare clic su Avanti.

    Nella pagina Protocollo e porte verificare che TCP sia selezionato e nella casella Porte locali specifiche digitare 1433 e quindi fare clic su Avanti.

  6. Nella pagina Azione lasciare selezionata l'opzione Consenti connessione e fare clic su Avanti.

  7. Nella pagina Profilo lasciare selezionata l'opzione Dominio , deselezionare le caselle di controllo Privato e Pubblico e quindi fare clic su Avanti.

    Nella pagina Profilo lasciare selezionata l'opzione Dominio, deselezionare le caselle di controllo Privato e Pubblico e quindi fare clic su Avanti.

  8. Nella pagina Nome assegnare alla regola un nome descrittivo appropriato, ad esempio SQL Server'istanza predefinita : accesso alla rete, quindi fare clic su Fine.

Per altre informazioni sulla configurazione di Windows Firewall per SQL Server, in particolare se è necessario comunicare con SQL Server tramite porte non standard o dinamiche, vedere Procedura: Configurare Windows Firewall per l'accesso al motore di database.

Configurare gli account di accesso e le autorizzazioni del database

Quando si distribuisce un'applicazione Web in Internet Information Services (IIS), l'applicazione viene eseguita usando l'identità del pool di applicazioni. In un ambiente di dominio le identità del pool di applicazioni usano l'account del computer del server in cui vengono eseguiti per accedere alle risorse di rete. Gli account del computer prendono il formato [nome di dominio]/strong>[nome computer]$<, ad esempio FABRIKAM\TESTWEB1$. Per consentire all'applicazione Web di accedere a un database in rete, è necessario:

  • Aggiungere un account di accesso per l'account del computer server Web all'istanza di SQL Server.
  • Eseguire il mapping dell'account di accesso dell'account del computer a tutti i ruoli di database necessari (in genere db_datareader e db_datawriter).

Se l'applicazione Web è in esecuzione in una server farm, anziché in un singolo server, è necessario ripetere queste procedure per ogni server Web nella server farm.

Nota

Per altre informazioni sulle identità del pool di applicazioni e sull'accesso alle risorse di rete, vedere Identità del pool di applicazioni.

È possibile affrontare queste attività in vari modi. Per creare l'account di accesso, è possibile:

  • Creare manualmente l'account di accesso nel server di database usando Transact-SQL o SQL Server Management Studio.
  • Usare un progetto server SQL Server 2008 in Visual Studio per creare e distribuire l'account di accesso.

Un SQL Server account di accesso è un oggetto a livello di server anziché un oggetto a livello di database, quindi non dipende dal database da distribuire. Di conseguenza, è possibile creare l'account di accesso in qualsiasi momento e l'approccio più semplice consiste spesso nel creare manualmente l'account di accesso nel server di database prima di iniziare a distribuire i database. È possibile usare la procedura successiva per creare un account di accesso in SQL Server Management Studio.

Per creare un account di accesso SQL Server per l'account del computer Server Web

  1. Nel server di database scegliere Tutti i programmi dal menu Start, fare clic su Microsoft SQL Server 2008 R2 e quindi fare clic su SQL Server Management Studio.

  2. Nella finestra di dialogo Connetti al server digitare il nome del server e quindi fare clic su Connetti.

    Questa immagine illustra: nella finestra di dialogo Connetti al server digitare il nome del server e quindi fare clic su Connetti.

  3. Nel riquadro Esplora oggetti fare clic con il pulsante destro del mouse su Sicurezza, scegliere Nuovo e quindi fare clic su Account di accesso.

  4. Nella finestra di dialogo Account di accesso - Nuovo digitare il nome dell'account del computer Server Web, ad esempio FABRIKAM\TESTWEB1$.

    Nella finestra di dialogo Account di accesso - Nuovo digitare il nome dell'account del computer Server Web, ad esempio FABRIKAM\TESTWEB1$.

  5. Fare clic su OK.

A questo punto, il server di database è pronto per la pubblicazione della distribuzione Web. Tuttavia, tutte le soluzioni distribuite non funzioneranno finché non si esegue il mapping dell'account di accesso dell'account del computer ai ruoli di database necessari. Il mapping dell'account di accesso ai ruoli del database richiede molto di più, perché non è possibile eseguire il mapping dei ruoli fino a quando non è stato distribuito il database. Per eseguire il mapping dell'account del computer all'account di accesso al database richiesto, è possibile:

  • Assegnare i ruoli del database all'account di accesso manualmente, dopo aver distribuito il database per la prima volta.
  • Usare uno script post-distribuzione per assegnare i ruoli del database all'account di accesso.

Per altre informazioni sull'automazione della creazione di account di accesso e mapping dei ruoli del database, vedere Distribuzione di appartenenze al ruolo del database in ambienti di test. In alternativa, è possibile usare la procedura successiva per eseguire il mapping dell'account di accesso del computer ai ruoli di database necessari manualmente. Tenere presente che non è possibile eseguire questa procedura fino a quando non è stato distribuito il database.

Per eseguire il mapping dei ruoli del database all'account di accesso del computer Del server Web

  1. Aprire SQL Server Management Studio come prima.

  2. Nel riquadro Esplora oggetti espandere il nodo Sicurezza, espandere il nodo Account di accesso e quindi fare doppio clic sull'account di accesso del computer, ad esempio FABRIKAM\TESTWEB1$.

    Nel riquadro Esplora oggetti espandere il nodo Sicurezza, espandere il nodo Account di accesso e quindi fare doppio clic sull'account di accesso del computer, ad esempio FABRIKAM\TESTWEB1$.

  3. Nella finestra di dialogo Proprietà account di accesso fare clic su Mapping utenti.

  4. Nella tabella Utenti mappati a questa tabella di accesso selezionare il nome del database, ad esempio ContactManager.

  5. Nell'elenco Appartenenza al ruolo database per:[nome database] selezionare le autorizzazioni necessarie. Nel caso della soluzione di esempio Contact Manager, è necessario selezionare i ruoli di db_datareader e db_datawriter .

    Nell'elenco Appartenenza al ruolo database per: [nome database] selezionare le autorizzazioni necessarie. Nel caso della soluzione di esempio Contact Manager, è necessario selezionare i ruoli db_datareader e db_datawriter.

  6. Fare clic su OK.

Sebbene il mapping manuale dei ruoli del database sia spesso più adeguato per gli ambienti di test, è meno consigliabile per distribuzioni automatizzate o un clic in ambienti di gestione temporanea o di produzione. Per altre informazioni sull'automazione di questo tipo di attività, è possibile usare script post-distribuzione in Distribuzione di appartenenze al ruolo del database in Ambienti di test.

Nota

Per altre informazioni sui progetti server e sui progetti di database, vedere Visual Studio 2010 SQL Server Progetti di database.

Configurare le autorizzazioni per l'account di distribuzione

Se l'account che si userà per eseguire la distribuzione non è un amministratore di SQL Server, sarà anche necessario creare un account di accesso per questo account. Per creare il database, l'account deve essere membro del ruolo del server dbcreator o disporre di autorizzazioni equivalenti.

Nota

Quando si usa Distribuzione Web o VSDBCMD per distribuire un database, è possibile usare le credenziali di Windows o le credenziali di SQL Server (se l'istanza di SQL Server è configurata per supportare l'autenticazione in modalità mista). La procedura successiva presuppone che si voglia usare le credenziali di Windows, ma non è possibile impedire di specificare un nome utente e una password SQL Server nella stringa di connessione quando si configura la distribuzione.

Per configurare le autorizzazioni per l'account di distribuzione

  1. Aprire SQL Server Management Studio come prima.

  2. Nel riquadro Esplora oggetti fare clic con il pulsante destro del mouse su Sicurezza, scegliere Nuovo e quindi fare clic su Account di accesso.

  3. Nella finestra di dialogo Account di accesso - Nuovo digitare il nome dell'account di distribuzione, ad esempio FABRIKAM\matt.

  4. Nel riquadro Seleziona una pagina fare clic su Ruoli server.

  5. Selezionare dbcreator e quindi fare clic su OK.

    Selezionare dbcreator e quindi fare clic su OK.

Per supportare le distribuzioni successive, è anche necessario aggiungere l'account di distribuzione al ruolo di db_owner nel database dopo la prima distribuzione. Questo perché nelle distribuzioni successive si modifica lo schema di un database esistente anziché creare un nuovo database. Come descritto nella sezione precedente, non è possibile aggiungere un utente a un ruolo di database finché non è stato creato il database, per motivi ovvi.

Per eseguire il mapping dell'account di distribuzione all'db_owner ruolo del database

  1. Aprire SQL Server Management Studio come prima.

  2. Nella finestra Esplora oggetti espandere il nodo Sicurezza, espandere il nodo Account di accesso e quindi fare doppio clic sull'account di accesso del computer, ad esempio FABRIKAM\matt.

  3. Nella finestra di dialogo Proprietà account di accesso fare clic su Mapping utenti.

  4. Nella tabella Utenti mappati a questa tabella di accesso selezionare il nome del database, ad esempio ContactManager.

  5. Nell'elenco Appartenenza al ruolo database per:[nome database] selezionare il ruolo db_owner .

    Nell'elenco Appartenenza al ruolo database per: [nome database] selezionare il ruolo db_owner.

  6. Fare clic su OK.

Conclusione

Il server di database deve ora essere pronto per accettare distribuzioni di database remote e consentire ai server Web IIS remoti di accedere ai database. Prima di tentare di distribuire e usare database, è possibile controllare questi punti chiave:

  • È stato configurato SQL Server per accettare connessioni TCP/IP remote?
  • Sono stati configurati firewall per consentire SQL Server traffico?
  • È stato creato un account di accesso dell'account del computer per ogni server Web che accederà a SQL Server?
  • La distribuzione del database include uno script per creare mapping di ruoli utente oppure è necessario crearli manualmente dopo la distribuzione del database per la prima volta?
  • È stato creato un account di accesso per l'account di distribuzione e l'è stato aggiunto al ruolo del server dbcreator ?

Altre informazioni

Per indicazioni sulla distribuzione di progetti di database, vedere Distribuzione di progetti di database. Per indicazioni sulla creazione di appartenenze ai ruoli di database eseguendo uno script post-distribuzione, vedere Distribuzione di appartenenze al ruolo del database in ambienti di test. Per indicazioni su come soddisfare i problemi di distribuzione univoci che i database di appartenenza rappresentano, vedere Distribuzione di database di appartenenza in ambienti aziendali.