Condividi tramite


Aggiungere una connessione a un database SQL di Azure

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

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

  • ASP.NET Core
  • .NET Core (tra cui 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 piattaforma UWP (Universal Windows Platform)

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

Prerequisiti

Connettersi a 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 scegliere Aggiungi dal menu di scelta rapida per aprire il menu dei servizi disponibili.

    Screenshot che mostra le opzioni del menu di scelta rapida di 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 alle dipendenze . 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 l'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 database SQL scelte.

    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 selezionare un database SQL di Azure esistente e selezionare Avanti.

    Se è necessario creare un nuovo componente, andare al passaggio successivo. In caso contrario, andare 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 database SQL di Azure: Crea nuova schermata e selezionare Crea.

      Screenshot che mostra la schermata

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

  6. Immettere un nome stringa di connessione oppure scegliere l'impostazione predefinita 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. Vedere Autenticazione di Microsoft Entra.

  7. Scegliere se si vuole che il stringa di connessione archiviato in un file di segreti locali o in Azure Key Vault e quindi scegliere Avanti.

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

  8. La schermata Riepilogo delle modifiche mostra tutte le modifiche che verranno apportate al progetto se si completa il processo. Se le modifiche hanno un aspetto 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 fare 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 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 per 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

<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 servizio app. 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 SQL di Azure. I ruoli aggiunti dipendono dai casi d'uso. Vedere ALTER ROLE.

Se il codice fa System.Data.SqlClientriferimento a , è necessario eseguire l'aggiornamento a Microsoft.Data.SqlClient, perché System.Data.SqlClient non supporta l'autenticazione di Microsoft Entra. Per eseguire l'aggiornamento, aggiungere un riferimento al pacchetto NuGet Microsoft.Data.SqlClient e aggiornare eventuali direttive using che fanno riferimento System.Data.SqlClient allo spazio dei Microsoft.Data.SqlClient nomi. Ci sono alcune modifiche di comportamento; vedere Conversione foglio informativo.

  1. Aprire il progetto in Visual Studio.

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

    Screenshot che mostra le opzioni del menu di scelta rapida di 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 alle dipendenze . 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 l'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 database SQL scelte.

    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 selezionare un database SQL di Azure esistente e selezionare Avanti.

    Se è necessario creare un nuovo componente, andare al passaggio successivo. In caso contrario, andare 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 database SQL di Azure: Crea nuova schermata e selezionare Crea.

      Screenshot che mostra la schermata

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

  6. Immettere un nome stringa di connessione oppure scegliere l'impostazione predefinita e scegliere se si vuole archiviare il stringa di connessione archiviato 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 hanno un aspetto 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:

    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.

Accedere al stringa di connessione

Informazioni su come archiviare i segreti in modo sicuro seguendo l'archiviazione sicura dei segreti delle app in fase di sviluppo in ASP.NET Core. In particolare, per leggere il stringa di connessione dall'archivio segreti, è possibile aggiungere codice come in Leggere il segreto tramite l'API di configurazione. Vedere 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. Vedere 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.

Genera 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 SQL Server Esplora oggetti

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

Screenshot che mostra l'Esplora oggetti di SQL Server.

Passaggi successivi

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

Il codice non corrisponde esattamente a quello usato nelle guide introduttive, che usano un modo diverso per ottenere il stringa di connessione. I stringa di connessione sono segreti e vengono archiviati in modo sicuro, come illustrato in Archiviazione sicura dei segreti delle app in fase di sviluppo in ASP.NET Core. In particolare, per leggere il 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 stringa di connessione creata da Servizi connessi è disponibile in un oggetto di configurazione. È possibile accedervi tramite una proprietà sulla WebApplicationBuilder classe (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 stringa di connessione creata da Servizi connessi è disponibile in un oggetto di configurazione. È possibile accedervi tramite una proprietà sulla WebApplicationBuilder classe (builder in molti modelli di progetto), come nell'esempio seguente:

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