Condividi tramite


Aggiungere una connessione a un database SQL di Azure

Con Servizi connessi di Visual Studio è possibile connettersi al database SQL di Azure, a un emulatore locale (ad esempio durante lo sviluppo) o a un database SQL Server locale. Per SQL Server on-premise, vedere Connettersi al database.

Con Visual Studio è possibile connettersi da uno dei tipi di progetto seguenti usando la funzionalità Servizi connessi:

  • ASP.NET Core
  • .NET Core (inclusa l'app console, WPF, Windows Form, libreria di classi)
  • Ruolo di lavoro .NET Core
  • Funzioni di Azure
  • App console .NET Framework
  • ASP.NET Model-View-Controller (MVC) (.NET Framework)
  • App UWP (Universal Windows Platform)

La funzionalità del servizio connesso aggiunge tutti i riferimenti e il codice di connessione necessari al progetto e modifica i file di configurazione in modo appropriato.

Prerequisiti

Connettersi al database SQL di Azure tramite Servizi connessi

  1. Aprire il progetto in Visual Studio.

  2. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nodo Servizi Connessi e, dal menu contestuale, scegliere Aggiungi per aprire il menu dei servizi disponibili.

    Screenshot che mostra le opzioni del menu contestuale dei servizi connessi.

    Se il nodo Servizi connessi non viene visualizzato, scegliere Progetto>Servizi connessi>Aggiungi.

  3. Scegliere database di SQL Server. Viene visualizzata la pagina Connetti alla dipendenza. Verranno visualizzate diverse opzioni:

    • SQL Server Express LocalDB, l'offerta di database SQL predefinita installata con Visual Studio
    • Database di SQL Server in un contenitore locale nel computer
    • Database di SQL Server, un SQL Server in locale nella rete locale
    • Database SQL di Azure, per il database SQL in esecuzione come servizio di Azure

    È possibile ridurre i costi e semplificare lo sviluppo anticipato iniziando con un database locale. È possibile eseguire la migrazione al servizio attivo in Azure in un secondo momento ripetendo questi passaggi e scegliendo un'altra opzione. Se si crea un database in locale che si vuole ricreare in Azure, è possibile eseguire la migrazione del database ad Azure in quel momento.

    Screenshot che mostra le opzioni del database SQL.

    Se si vuole connettersi al servizio di Azure, continuare con il passaggio successivo o, se non si è già connessi, accedere all'account Azure prima di continuare. Se non si ha un account Azure, è possibile iscriversi per ottenere una versione di valutazione gratuita .

  4. Nella schermata Configura database SQL di Azure, seleziona un database SQL di Azure esistente e seleziona Avanti.

    Se è necessario creare un nuovo componente, andare al passaggio successivo. In caso contrario, passare al passaggio 7.

    screenshot che mostra la schermata

  5. Per creare un database SQL di Azure:

    1. Selezionare Crea nuovo con il segno più verde.

    2. Compilare la schermata Crea nuovo database SQL di Azure e Selezionare Crea.

      screenshot che mostra la schermata

    3. Quando viene visualizzata la schermata Configura database SQL di Azure, viene visualizzato il nuovo database nell'elenco. Selezionare il nuovo database nell'elenco e selezionare Avanti.

  6. Immettere un nome di stringa di connessione oppure scegliere il valore predefinito e quindi scegliere Impostazioni aggiuntive.

    screenshot che mostra la schermata

    Nota

    Con Visual Studio 2022 versione 17.12 e successive, questa procedura usa l'identità gestita di Microsoft Entra, un metodo di autenticazione senza password, per connettersi al database. L'avviso in questa schermata indica che è necessario eseguire un passaggio manuale nel portale di Azure dopo aver completato questa procedura in Visual Studio. Consultare l'autenticazione di Microsoft Entra.

  7. Scegliere se si vuole archiviare la stringa di connessione in un file di segreti locale o in Azure Key Vaulte quindi scegliere Avanti.

    Screenshot che mostra le opzioni per la posizione in cui archiviare la stringa di connessione del database SQL di Azure.

  8. La schermata Riepilogo delle modifiche mostra tutte le modifiche che verranno apportate al progetto se si completa il processo. Se le modifiche sono ok, scegliere Fine.

    screenshot che mostra la sezione

    Se viene richiesto di impostare regole del firewall, scegliere .

    Screenshot che mostra le regole del firewall.

  9. In Esplora soluzioni, fai doppio clic sul nodo Servizi connessi per aprire la scheda Servizi connessi. La connessione viene visualizzata nella sezione Dipendenze del Servizio.

    screenshot che mostra la sezione

    Se si fa clic sui tre puntini accanto alla dipendenza aggiunta, è possibile visualizzare varie opzioni, ad esempio Connetti per riaprire la procedura guidata e modificare la connessione. È anche possibile fare clic sui tre puntini in alto a destra della finestra per visualizzare le opzioni per avviare dipendenze locali, modificare le impostazioni e altro ancora.

  10. Se si usa l'identità gestita (Visual Studio 17.12 e versioni successive), vedere la sezione successiva per configurare l'utente dell'identità gestita nel database SQL di Azure.

Autenticazione di Microsoft Entra

Con Visual Studio 2022 versione 17.12 e successive, la procedura dei servizi connessi usa l'autenticazione Microsoft Entra, che è il metodo di autenticazione più sicuro. Visual Studio, tuttavia, non crea automaticamente l'utente amministratore di Microsoft Entra nel database SQL di Azure. Se non è presente un utente amministratore di Microsoft Entra, la connessione non riuscirà a eseguire correttamente l'autenticazione.

È possibile usare il portale di Azure, PowerShell o l'interfaccia della riga di comando di Azure per creare l'utente amministratore di Microsoft Entra. Per istruzioni dettagliate su ognuno di questi metodi, vedere Impostare l'utente amministratore di Microsoft Entra.

Dopo aver completato il processo di Servizi connessi, è necessario creare un utente SQL corrispondente all'identità gestita e impostare le autorizzazioni eseguendo istruzioni SQL nel database. Accedere all'editor di query nel portale di Azure come utente amministratore di Microsoft Entra ed eseguire istruzioni simili alle seguenti:

CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<identity-name>];

GO

Il <identity-name> è il nome dell'identità gestita in Microsoft Entra ID. Se l'identità è assegnata dal sistema, il nome corrisponde sempre al nome dell'app del servizio App Service. Per uno slot di distribuzione, il nome dell'identità assegnata dal sistema è <app-name>/slots/<slot-name>. Per concedere le autorizzazioni per un gruppo Microsoft Entra, usare invece il nome visualizzato del gruppo ( ad esempio, myAzureSQLDBAccessGroup). Vedere tipi di identità gestite e identità gestite in Microsoft Entra per Azure SQL. I ruoli aggiunti dipendono dai casi d'uso. Vedere ALTER ROLE.

Se il codice fa riferimento System.Data.SqlClient, è necessario eseguire l'aggiornamento a Microsoft.Data.SqlClient, poiché System.Data.SqlClient non supporta l'autenticazione di Microsoft Entra. Per eseguire l'aggiornamento, aggiungere un riferimento al pacchetto NuGet Microsoft.Data.SqlCliente aggiornare le direttive using che fanno riferimento a System.Data.SqlClient per fare riferimento allo spazio dei nomi Microsoft.Data.SqlClient. Ci sono alcune modifiche di comportamento; vedere guida rapida al porting.

  1. Aprire il progetto in Visual Studio.

  2. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nodo Servizi connessi e, dal menu di scelta rapida, scegliere Aggiungi per aprire il menu dei servizi disponibili.

    Screenshot che mostra le opzioni del menu di scelta rapida dei servizi connessi.

    Se il nodo Servizi Connessi non viene visualizzato, scegliere Progetto>Servizi Connessi>Aggiungi.

  3. Scegliere il database di SQL Server . Viene visualizzata la pagina Connettere alla Dipendenza. Verranno visualizzate diverse opzioni:

    • SQL Server Express LocalDB, l'offerta di database SQL predefinita installata con Visual Studio
    • Database di SQL Server in un contenitore locale nel computer
    • Database di SQL Server, un'istanza di SQL Server locale nella rete locale
    • Database SQL di Azure, per il database SQL in esecuzione come servizio di Azure

    È possibile ridurre i costi e semplificare lo sviluppo anticipato iniziando con un database locale. È possibile eseguire la migrazione al servizio attivo in Azure in un secondo momento ripetendo questi passaggi e scegliendo un'altra opzione. Se si crea un database in locale che si vuole ricreare in Azure, è possibile eseguire la migrazione del database ad Azure in quel momento.

    Screenshot che mostra le opzioni del database SQL.

    Se si vuole connettersi al servizio di Azure, continuare con il passaggio successivo o, se non si è già connessi, accedere all'account Azure prima di continuare. Se non si ha un account Azure, è possibile iscriversi per ottenere una versione di valutazione gratuita .

  4. Nella schermata Configura il database SQL di Azure, selezionare un database SQL di Azure esistente e selezionare Avanti.

    Se è necessario creare un nuovo componente, andare al passaggio successivo. In caso contrario, procedi alla fase 7.

    screenshot che mostra la schermata

  5. Per creare un database SQL di Azure:

    1. Selezionare Crea nuovo con il segno più verde.

    2. Compila la schermata per creare un nuovo database SQL di Azure e seleziona Crea.

      screenshot che mostra la schermata

    3. Quando viene visualizzata la schermata Configura database SQL di Azure, viene visualizzato il nuovo database nell'elenco. Selezionare il nuovo database nell'elenco e selezionare Avanti.

  6. Immettere un nome di stringa di connessione o scegliere l'impostazione predefinita e scegliere se si vuole archiviare la stringa di connessione in un file di segreti locale o in Azure Key Vault.

    screenshot che mostra la schermata

  7. La schermata Riepilogo delle modifiche mostra tutte le modifiche che verranno apportate al progetto se si completa il processo. Se le modifiche sono ok, scegliere Fine.

    screenshot che mostra la sezione

    Se viene richiesto di impostare regole del firewall, scegliere .

    Screenshot che mostra le regole del firewall.

  8. In Esplora Soluzioni, fare doppio clic sul nodo Servizi connessi per aprire la scheda Servizi connessi. La connessione viene visualizzata nella sezione Dipendenze del Servizio.

    Istantanea che mostra la sezione

    Se si fa clic sui tre puntini accanto alla dipendenza aggiunta, è possibile visualizzare varie opzioni, ad esempio Connetti per riaprire la procedura guidata e modificare la connessione. È anche possibile fare clic sui tre puntini in alto a destra della finestra per visualizzare le opzioni per avviare dipendenze locali, modificare le impostazioni e altro ancora.

Accedere alla stringa di connessione

Scopri come memorizzare i segreti in modo sicuro seguendo la memorizzazione sicura dei segreti delle app in fase di sviluppo in ASP.NET Core. In particolare, per leggere la stringa di connessione dall'archivio segreti, è possibile aggiungere codice come in Leggere il segreto tramite l'API di configurazione. Vedi anche inserimento delle dipendenze in ASP.NET Core.

Migrazioni di Entity Framework

Può essere utile usare un archivio dati locale durante la fase di sviluppo iniziale, ma con Entity Framework Core, quando si è pronti per passare al cloud, è possibile usare il supporto di Visual Studio per la migrazione di Entity Framework per spostare il database o unire le modifiche con un archivio dati remoto. Consulta Panoramica delle migrazioni.

Nella scheda Servizi connessi è possibile trovare i comandi di migrazione facendo clic sui tre puntini, come illustrato nello screenshot:

Screenshot che mostra i comandi di migrazione.

I comandi sono disponibili per creare nuove migrazioni, applicarle direttamente o generare script SQL che applicano le migrazioni.

Aggiungere la migrazione

Quando viene introdotta una modifica del modello di dati, è possibile usare gli strumenti di Entity Framework Core per aggiungere una migrazione corrispondente che descrive nel codice gli aggiornamenti necessari per mantenere sincronizzato lo schema del database. Entity Framework Core confronta il modello corrente con uno snapshot del modello precedente per determinare le differenze e genera i file di origine della migrazione. I file vengono aggiunti al progetto, in genere in una cartella denominata Migrazioni e possono essere rilevati nel controllo del codice sorgente del progetto come qualsiasi altro file di origine.

Quando si sceglie questa opzione, viene chiesto di specificare il nome della classe di contesto che rappresenta lo schema del database di cui si vuole eseguire la migrazione.

Screenshot che mostra l'aggiunta di una migrazione di Entity Framework.

Aggiornare il database

Dopo aver creato una migrazione, può essere applicata a un database. Entity Framework aggiorna il database e lo schema con le modifiche specificate nel codice di migrazione. Quando si sceglie questa opzione, viene chiesto di specificare il nome della classe di contesto che rappresenta lo schema del database di cui si vuole eseguire la migrazione.

Generare uno script SQL

Il modo consigliato per distribuire le migrazioni in un database di produzione consiste nel generare script SQL. I vantaggi di questa strategia includono quanto segue:

  • Gli script SQL possono essere esaminati per verificare l'accuratezza; questo aspetto è importante perché l'applicazione delle modifiche dello schema ai database di produzione è un'operazione potenzialmente pericolosa che potrebbe comportare la perdita di dati.
  • In alcuni casi, gli script possono essere ottimizzati per soddisfare le esigenze specifiche di un database di produzione.
  • Gli script SQL possono essere usati insieme a una tecnologia di distribuzione e possono anche essere generati come parte del processo di integrazione continua.
  • Gli script SQL possono essere forniti a un amministratore di database e possono essere gestiti e archiviati separatamente.

Quando si usa questa opzione, viene richiesta la classe di contesto del database e il percorso del file di script.

Screenshot che mostra l'opzione Genera script SQL.

Aprire in Esplora oggetti di SQL Server

Per praticità, questo comando consente di passare a Esplora oggetti di SQL Server, in modo da poter visualizzare tabelle e altre entità di database e lavorare direttamente con i dati. Vedi Esplora oggetti.

screenshot che mostra Esplora oggetti di SQL Server.

Passaggi successivi

È possibile continuare con le guide introduttive per il database SQL di Azure, ma anziché iniziare dall'inizio, è possibile iniziare dopo la configurazione della connessione iniziale. Se si usa Entity Framework, è possibile iniziare da Aggiungere il codice per connettersi al database SQL di Azure. Se si usano classi di dati SqlClient o ADO.NET, è possibile iniziare da Aggiungere il codice per connettersi al database SQL di Azure.

Il codice non corrisponde esattamente a quello usato nelle guide introduttive, che usano un modo diverso per ottenere la stringa di connessione. Le stringhe di connessione sono segreti e vengono archiviate in modo sicuro come illustrato in archiviazione sicura dei segreti dell'app in fase di sviluppo in ASP.NET Core. In particolare, per leggere la stringa di connessione dall'archivio segreti, è possibile aggiungere codice come in Leggere il segreto tramite l'API di configurazione.

In ASP.NET progetti Core, l'impostazione di connessione o la stringa di connessione creata da Servizi connessi è disponibile in un oggetto di configurazione. È possibile accedervi tramite una proprietà nella classe WebApplicationBuilder (builder in molti modelli di progetto), come nell'esempio seguente:

var connection = builder.Configuration["ConnectionStrings:DatabaseConnection"];

La stringa da fornire alla proprietà Configuration deve corrispondere alla chiave in secrets.json o in Azure Key Vault, fornita nella procedura Servizi connessi. Ad esempio, con Visual Studio 2022 17.12 e versioni successive, l'impostazione di connessione viene archiviata in secrets.json come:

{
  "ConnectionStrings:DatabaseConnection": "Server=tcp:webapplication16dbserver.database.windows.net;Authentication=Active Directory Default;Database=WebApplication16_db;",
}

In ASP.NET progetti Core, l'impostazione di connessione o la stringa di connessione creata da Servizi connessi è disponibile in un oggetto di configurazione. È possibile accedervi tramite una proprietà nella classe WebApplicationBuilder (builder in molti modelli di progetto), come nell'esempio seguente:

var connection = builder.Configuration["ConnectionStrings:ConnectionString1"];