Delen via


Verbinding maken azure SQL Database doorzoeken en er query's op uitvoeren met behulp van .NET en de bibliotheek Microsoft.Data.SqlClient

Van toepassing op: Azure SQL Database

In deze quickstart wordt beschreven hoe u een toepassing verbindt met een database in Azure SQL Database en query's uitvoert met behulp van .NET en de Bibliotheek Microsoft.Data.SqlClient . Deze quickstart volgt de aanbevolen benadering zonder wachtwoord om verbinding te maken met de database. Meer informatie over verbindingen zonder wachtwoord vindt u in de hub zonder wachtwoord.

Vereisten

De database configureren

Voor beveiligde, wachtwoordloze verbindingen met Azure SQL Database zijn bepaalde databaseconfiguraties vereist. Controleer de volgende instellingen op uw logische server in Azure om verbinding te maken met Azure SQL Database in zowel lokale als gehoste omgevingen:

  1. Voor lokale ontwikkelingsverbindingen moet u ervoor zorgen dat uw logische server zo is geconfigureerd dat het IP-adres van uw lokale computer en andere Azure-services verbinding kunnen maken:

    • Navigeer naar de pagina Netwerken van uw server.

    • Schakel het keuzerondje Geselecteerde netwerken in om extra configuratieopties weer te geven.

    • Selecteer Het IPv4-adres van de client toevoegen (xx.xx.xx.xx) om een firewallregel toe te voegen waarmee verbindingen vanaf het IPv4-adres van uw lokale computer worden ingeschakeld. U kunt ook + Een firewallregel toevoegen selecteren om een specifiek IP-adres van uw keuze in te voeren.

    • Zorg ervoor dat het selectievakje Azure-services en -resources toegang tot deze server toestaan is ingeschakeld.

      A screenshot showing how to configure firewall rules.

      Waarschuwing

      Het inschakelen van azure-services en -resources voor toegang tot deze serverinstelling is geen aanbevolen beveiligingspraktijk voor productiescenario's. Echte toepassingen moeten veiligere benaderingen implementeren, zoals sterkere firewallbeperkingen of configuraties van virtuele netwerken.

      Meer informatie over databasebeveiligingsconfiguraties vindt u in de volgende bronnen:

  2. Op de server moet ook Microsoft Entra-verificatie zijn ingeschakeld en moet een Microsoft Entra-beheerdersaccount zijn toegewezen. Voor lokale ontwikkelingsverbindingen moet het Microsoft Entra-beheerdersaccount een account zijn dat u ook kunt aanmelden bij Visual Studio of de Azure CLI met lokaal. U kunt controleren of Microsoft Entra-verificatie is ingeschakeld op de pagina Microsoft Entra-id van uw logische server.

    A screenshot showing how to enable Microsoft Entra authentication.

  3. Als u een persoonlijk Azure-account gebruikt, moet u Ervoor zorgen dat u Microsoft Entra hebt ingesteld en geconfigureerd voor Azure SQL Database om uw account toe te wijzen als serverbeheerder. Als u een bedrijfsaccount gebruikt, wordt de Microsoft Entra-id waarschijnlijk al voor u geconfigureerd.

Het project maken

Maak voor de volgende stappen een .NET Minimal Web API met behulp van de .NET CLI of Visual Studio 2022.

  1. Navigeer in het menu van Visual Studio naar Bestand>nieuw>project...

  2. Voer in het dialoogvenster ASP.NET in het zoekvak van de projectsjabloon in en selecteer het ASP.NET Core Web API-resultaat. Kies Volgende onder aan het dialoogvenster.

  3. Voer DotNetSQL in voor de projectnaam. Laat de standaardwaarden voor de rest van de velden staan en selecteer Volgende.

  4. Voor framework selecteert u .NET 7.0 en schakelt u Controllers gebruiken uit (schakel het selectievakje uit om minimale API's te gebruiken). In deze quickstart wordt een minimale API-sjabloon gebruikt om het maken en configureren van eindpunten te stroomlijnen.

  5. Kies Maken. Het nieuwe project wordt geopend in de Visual Studio-omgeving.

De bibliotheek Microsoft.Data.SqlClient toevoegen

Als u verbinding wilt maken met Azure SQL Database met behulp van .NET, installeert u Microsoft.Data.SqlClient. Dit pakket fungeert als gegevensprovider voor het maken van verbinding met databases, het uitvoeren van opdrachten en het ophalen van resultaten.

Notitie

Zorg ervoor dat u installeert Microsoft.Data.SqlClient en niet System.Data.SqlClient. Microsoft.Data.SqlClient is een nieuwere versie van de SQL-clientbibliotheek die extra mogelijkheden biedt.

  1. Klik in het venster Solution Explorer met de rechtermuisknop op het knooppunt Afhankelijkheden van het project en selecteer NuGet-pakketten beheren.

  2. Zoek in het resulterende venster naar SqlClient. Zoek het Microsoft.Data.SqlClient resultaat en selecteer Installeren.

De verbindingsreeks configureren

Voor lokale ontwikkeling met wachtwoordloze verbindingen met Azure SQL Database voegt u de volgende ConnectionStrings sectie toe aan het appsettings.json bestand. Vervang de <database-server-name> tijdelijke aanduidingen door <database-name> uw eigen waarden.

"ConnectionStrings": {
    "AZURE_SQL_CONNECTIONSTRING": "Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=\"Active Directory Default\";"
}

De wachtwoordloze verbindingsreeks stelt een configuratiewaarde in van, waarmee de Microsoft.Data.SqlClient bibliotheek verbinding maakt met Azure SQL Database met behulp van Authentication="Active Directory Default"een klasse met de naam DefaultAzureCredential. DefaultAzureCredential maakt wachtwoordloze verbindingen met Azure-services mogelijk en wordt geleverd door de Azure Identity-bibliotheek waarvan de SQL-clientbibliotheek afhankelijk is. DefaultAzureCredential ondersteunt meerdere verificatiemethoden en bepaalt welke tijdens runtime moet worden gebruikt voor verschillende omgevingen.

Wanneer de app bijvoorbeeld lokaal wordt uitgevoerd, DefaultAzureCredential verifieert u zich via de gebruiker waarmee u bent aangemeld bij Visual Studio of andere lokale hulpprogramma's, zoals de Azure CLI. Zodra de app in Azure wordt geïmplementeerd, detecteert en past dezelfde code de beheerde identiteit toe die is gekoppeld aan de gehoste app, die u later configureert. In het overzicht van de Azure Identity-bibliotheek worden de volgorde en locaties uitgelegd waarin DefaultAzureCredential wordt gezocht naar referenties.

Notitie

Wachtwoordloze verbindingsreeks s zijn veilig om door te voeren naar broncodebeheer, omdat ze geen geheimen bevatten, zoals gebruikersnamen, wachtwoorden of toegangssleutels.

De code toevoegen om verbinding te maken met Azure SQL Database

Vervang de inhoud van het Program.cs bestand door de volgende code, waarmee de volgende belangrijke stappen worden uitgevoerd:

  • Haalt de verbindingsreeks zonder wachtwoord op uitappsettings.json
  • Hiermee maakt u een Persons tabel in de database tijdens het opstarten (alleen voor testscenario's)
  • Hiermee maakt u een HTTP GET-eindpunt om alle records op te halen die in de Persons tabel zijn opgeslagen
  • Hiermee maakt u een HTTP POST-eindpunt om nieuwe records toe te voegen aan de Persons tabel
using Microsoft.Data.SqlClient;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// For production scenarios, consider keeping Swagger configurations behind the environment check
// if (app.Environment.IsDevelopment())
// {
    app.UseSwagger();
    app.UseSwaggerUI();
// }

app.UseHttpsRedirection();

string connectionString = app.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING")!;

try
{
    // Table would be created ahead of time in production
    using var conn = new SqlConnection(connectionString);
    conn.Open();

    var command = new SqlCommand(
        "CREATE TABLE Persons (ID int NOT NULL PRIMARY KEY IDENTITY, FirstName varchar(255), LastName varchar(255));",
        conn);
    using SqlDataReader reader = command.ExecuteReader();
}
catch (Exception e)
{
    // Table may already exist
    Console.WriteLine(e.Message);
}

app.MapGet("/Person", () => {
    var rows = new List<string>();

    using var conn = new SqlConnection(connectionString);
    conn.Open();

    var command = new SqlCommand("SELECT * FROM Persons", conn);
    using SqlDataReader reader = command.ExecuteReader();

    if (reader.HasRows)
    {
        while (reader.Read())
        {
            rows.Add($"{reader.GetInt32(0)}, {reader.GetString(1)}, {reader.GetString(2)}");
        }
    }

    return rows;
})
.WithName("GetPersons")
.WithOpenApi();

app.MapPost("/Person", (Person person) => {
    using var conn = new SqlConnection(connectionString);
    conn.Open();

    var command = new SqlCommand(
        "INSERT INTO Persons (firstName, lastName) VALUES (@firstName, @lastName)",
        conn);

    command.Parameters.Clear();
    command.Parameters.AddWithValue("@firstName", person.FirstName);
    command.Parameters.AddWithValue("@lastName", person.LastName);

    using SqlDataReader reader = command.ExecuteReader();
})
.WithName("CreatePerson")
.WithOpenApi();

app.Run();

Voeg tot slot de Person klasse toe aan de onderkant van het Program.cs bestand. Deze klasse vertegenwoordigt één record in de tabel van Persons de database.

public class Person
{
    public required string FirstName { get; set; }
    public required string LastName { get; set; }
}

De app lokaal uitvoeren en testen

De app is gereed om lokaal te worden getest. Zorg ervoor dat u bent aangemeld bij Visual Studio of de Azure CLI met hetzelfde account dat u hebt ingesteld als de beheerder voor uw database.

  1. Druk boven aan Visual Studio op de knop Uitvoeren om het API-project te starten.

  2. Vouw op de pagina Swagger UI de POST-methode uit en selecteer Probeer het.

  3. Wijzig de voorbeeld-JSON om waarden voor de voor- en achternaam op te nemen. Selecteer Uitvoeren om een nieuwe record toe te voegen aan de database. De API retourneert een geslaagd antwoord.

    A screenshot showing how to test the API.

  4. Vouw de GET-methode uit op de pagina Swagger UI en selecteer Uitproberen. Kies Uitvoeren en de persoon die u zojuist hebt gemaakt, wordt geretourneerd.

Implementeren naar Azure App Service

De app is klaar om te worden geïmplementeerd in Azure. Visual Studio kan een Azure-app Service maken en uw toepassing in één werkstroom implementeren.

  1. Zorg ervoor dat de app is gestopt en bouwt.

  2. Klik in het Venster Solution Explorer van Visual Studio met de rechtermuisknop op het projectknooppunt op het hoogste niveau en selecteer Publiceren.

  3. Selecteer In het publicatiedialoogvenster Azure als het implementatiedoel en selecteer vervolgens Volgende.

  4. Selecteer voor het specifieke doel Azure-app Service (Windows) en selecteer vervolgens Volgende.

  5. Selecteer het + pictogram om een nieuwe App Service te maken waarop u wilt implementeren en voer de volgende waarden in:

    • Naam: Laat de standaardwaarde staan.

    • Abonnementsnaam: selecteer het abonnement waarnaar u wilt implementeren.

    • Resourcegroep: Selecteer Nieuw en maak een nieuwe resourcegroep met de naam msdocs-dotnet-sql.

    • Hostingabonnement: Selecteer Nieuw om het dialoogvenster hostingabonnement te openen. Laat de standaardwaarden staan en selecteer OK.

    • Selecteer Maken om het oorspronkelijke dialoogvenster te sluiten. Visual Studio maakt de App Service-resource in Azure.

      A screenshot showing how to deploy with Visual Studio.

  6. Zodra de resource is gemaakt, controleert u of deze is geselecteerd in de lijst met app-services en selecteert u Vervolgens.

  7. Schakel in de STAP API Management het selectievakje Deze stap overslaan onderaan in en kies Voltooien.

  8. Selecteer In de stap Voltooien de optie Sluiten als het dialoogvenster niet automatisch wordt gesloten.

  9. Selecteer Publiceren in de rechterbovenhoek van het overzicht van het publicatieprofiel om de app in Azure te implementeren.

Wanneer de implementatie is voltooid, start Visual Studio de browser om de gehoste app weer te geven, maar op dit moment werkt de app niet correct in Azure. U moet nog steeds de beveiligde verbinding tussen de App Service en de SQL-database configureren om uw gegevens op te halen.

Verbinding maken de App Service naar Azure SQL Database

De volgende stappen zijn vereist voor het maken van een wachtwoordloze verbinding tussen het App Service-exemplaar en Azure SQL Database:

  1. Maak een beheerde identiteit voor de App Service. De Microsoft.Data.SqlClient bibliotheek die in uw app is opgenomen, detecteert automatisch de beheerde identiteit, net zoals uw lokale Visual Studio-gebruiker is gedetecteerd.
  2. Maak een SQL-databasegebruiker en koppel deze aan de door App Service beheerde identiteit.
  3. Wijs SQL-rollen toe aan de databasegebruiker die lees-, schrijf- en mogelijk andere machtigingen toestaat.

Er zijn meerdere hulpprogramma's beschikbaar om deze stappen te implementeren:

Service Verbinding maken or is een hulpprogramma waarmee geverifieerde verbindingen tussen verschillende services in Azure worden gestroomlijnd. Service Verbinding maken or ondersteunt momenteel het verbinden van een App Service met een SQL-database via de Azure CLI met behulp van de az webapp connection create sql opdracht. Met deze enkele opdracht worden de drie bovenstaande stappen voor u voltooid.

az webapp connection create sql \
    -g <app-service-resource-group> \
    -n <app-service-name> \
    --tg <database-server-resource-group> \
    --server <database-server-name> \
    --database <database-name> \
    --system-identity

U kunt de wijzigingen controleren die door Service Verbinding maken or zijn aangebracht in de App Service-instellingen.

  1. Navigeer naar de pagina Identiteit voor uw App Service. Op het tabblad Systeem toegewezen moet de status worden ingesteld op Aan. Deze waarde betekent dat een door het systeem toegewezen beheerde identiteit is ingeschakeld voor uw app.

  2. Navigeer naar de pagina Configuratie voor uw App Service. Op het tabblad Verbinding maken iontekenreeksen ziet u een verbindingsreeks met de naam AZURE_SQL_CONNECTIONSTRING. Selecteer de klik om waardetekst weer te geven om de gegenereerde wachtwoordloze verbindingsreeks weer te geven. De naam van deze verbindingsreeks overeenkomt met de naam die u in uw app hebt geconfigureerd, zodat deze automatisch wordt gedetecteerd wanneer deze wordt uitgevoerd in Azure.

Belangrijk

Hoewel deze oplossing een eenvoudige aanpak biedt om aan de slag te gaan, is het geen best practice voor omgevingen op productieniveau. In deze scenario's mag de app niet alle bewerkingen uitvoeren met één, verhoogde identiteit. U moet proberen het principe van minimale bevoegdheden te implementeren door meerdere identiteiten met specifieke machtigingen voor specifieke taken te configureren.

Meer informatie over het configureren van databaserollen en beveiliging vindt u in de volgende resources:

De geïmplementeerde toepassing testen

  1. Selecteer de knop Bladeren boven aan de overzichtspagina van App Service om de hoofd-URL van uw app te starten.

  2. Voeg het /swagger/index.html pad toe aan de URL om dezelfde Swagger-testpagina te laden die u lokaal hebt gebruikt.

  3. Voer test-GET- en POST-aanvragen uit om te controleren of de eindpunten werken zoals verwacht.

Tip

Als u tijdens het testen een 500 interne serverfout krijgt, kan dit worden veroorzaakt door uw databasenetwerkconfiguraties. Controleer of uw logische server is geconfigureerd met de instellingen die worden beschreven in de sectie Database configureren.

Gefeliciteerd. Uw toepassing is nu verbonden met Azure SQL Database in zowel lokale als gehoste omgevingen.

De resources opschonen

Wanneer u klaar bent met het werken met de Azure SQL Database, verwijdert u de resource om onbedoelde kosten te voorkomen.

  1. Zoek in de zoekbalk van Azure Portal naar Azure SQL en selecteer het overeenkomende resultaat.

  2. Zoek en selecteer uw database in de lijst met databases.

  3. Selecteer Verwijderen op de pagina Overzicht van uw Azure SQL Database.

  4. Typ op de Azure-pagina die u wilt verwijderen... die wordt geopend de naam van uw database om te bevestigen en selecteer vervolgens Verwijderen.