Megosztás a következőn keresztül:


Csatlakozás és lekérdezés az Azure SQL Database-hez a .NET és a Microsoft.Data.SqlClient kódtár használatával

A következőkre vonatkozik:Azure SQL Database

Ez a rövid útmutató bemutatja, hogyan csatlakoztathat egy alkalmazást egy Adatbázishoz az Azure SQL Database-ben, és hogyan hajthat végre lekérdezéseket a .NET és a Microsoft.Data.SqlClient könyvtár használatával. Ez a rövid útmutató az adatbázishoz való csatlakozás ajánlott jelszó nélküli megközelítését követi. További információt találhatsz a jelszó nélküli kapcsolatokról a jelszó nélküli platformon.

Előfeltételek

Az adatbázis konfigurálása

Az Azure SQL Database biztonságos, jelszó nélküli kapcsolataihoz bizonyos adatbázis-konfigurációk szükségesek. Ellenőrizze a következő beállításokat a logikai kiszolgálón az Azure-ben, hogy megfelelően csatlakozzon az Azure SQL Database-hez helyi és üzemeltetett környezetekben is:

  1. Helyi fejlesztési kapcsolatok esetén győződjön meg arról, hogy a logikai kiszolgáló úgy van konfigurálva, hogy a helyi gép IP-címe és más Azure-szolgáltatások kapcsolódhassanak:

    • Lépjen a kiszolgáló hálózatkezelési lapjára.

    • A Kijelölt hálózatok rádiógomb bekapcsolásával további konfigurációs beállításokat jelenít meg.

    • Válassza Adja hozzá az ügyfél IPv4-címét (xx.xx.xx.xx.xx) egy tűzfalszabály hozzáadásához, amely engedélyezi a helyi gép IPv4-címéről érkező kapcsolatokat. Másik lehetőségként választhatja a + Tűzfalszabály hozzáadása lehetőséget is egy tetszőleges IP-cím megadásához.

    • Győződjön meg arról, hogy a Az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése a kiszolgálóhoz jelölőnégyzet be van jelölve.

      Képernyőkép a tűzfalszabályok konfigurálásáról.

      Figyelmeztetés

      A „Az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése ehhez a kiszolgálóhoz” beállítás engedélyezése nem ajánlott biztonsági gyakorlat éles helyzetekben. A valós alkalmazásoknak biztonságosabb megközelítéseket kell implementálniuk, például erősebb tűzfalkorlátozásokat vagy virtuális hálózati konfigurációkat.

      Az adatbázis biztonsági konfigurációiról az alábbi forrásokban olvashat bővebben:

  2. A kiszolgálónak engedélyeznie kell a Microsoft Entra-hitelesítést is, és hozzá kell rendelnie egy Microsoft Entra rendszergazdai fiókot. Helyi fejlesztési kapcsolatok esetén a Microsoft Entra rendszergazdai fióknak olyan fióknak kell lennie, amellyel helyileg is bejelentkezhet a Visual Studióba vagy az Azure CLI-be. Ellenőrizheti, hogy a kiszolgálón engedélyezve van-e a Microsoft Entra-hitelesítés a logikai kiszolgáló Microsoft Entra-azonosító lapján.

    Képernyőkép a Microsoft Entra-hitelesítés engedélyezéséről.

  3. Ha személyes Azure-fiókot használ, győződjön meg arról, hogy Microsoft Entra-t állította be és konfigurálta az Azure SQL Database- a fiók kiszolgálói rendszergazdaként való hozzárendeléséhez. Ha vállalati fiókot használ, a Microsoft Entra-azonosító valószínűleg már konfigurálva lesz Az Ön számára.

A projekt létrehozása

A következő lépésekhez hozzon létre egy .NET Minimal Web API-t a .NET CLI vagy a Visual Studio 2022 használatával.

  1. A Visual Studio menüjében lépjen Fájl>Új>Projekt elemre..

  2. A párbeszédpanelablakban írja be a ASP.NET a projektsablon keresőmezőbe, és válassza ki a ASP.NET Core Web API-találatot. A párbeszédpanel alján válassza a Tovább gombot.

  3. A Projektnévmezőbe írja be DotNetSQL. Hagyja meg a többi mező alapértelmezett értékeit, és válassza a Tovább gombot.

  4. A Frameworkesetében válassza a .NET 7.0 lehetőséget, és törölje a jelet Vezérlők használata (a minimális API-k használatának jelölésének törlése)jelölőnégyzetből. Ez a rövid útmutató minimális API-sablonnal egyszerűsíti a végpontok létrehozását és konfigurálását.

  5. Válassza a Létrehozás elemet. Az új projekt a Visual Studio-környezetben nyílik meg.

A Microsoft.Data.SqlClient kódtár hozzáadása

Ha az Azure SQL Database-hez a .NET használatával szeretne csatlakozni, telepítse Microsoft.Data.SqlClient. Ez a csomag adatszolgáltatóként működik az adatbázisokhoz való csatlakozáshoz, a parancsok végrehajtásához és az eredmények lekéréséhez.

Megjegyzés

Győződjön meg arról, hogy Microsoft.Data.SqlClient telepít, és ne System.Data.SqlClient. Microsoft.Data.SqlClient az SQL-ügyfélkódtár újabb verziója, amely további képességeket biztosít.

  1. A Megoldáskezelő ablakban kattintson a jobb gombbal a projekt Függőségek csomópontra, és válassza a NuGet-csomagok kezeléselehetőséget.

  2. Az eredményül kapott ablakban keresse meg SqlClient. Keresse meg a Microsoft.Data.SqlClient eredményt, és válassza a Telepítéslehetőséget.

Kapcsolati sztring konfigurálása

Az Azure SQL Database-hez jelszó nélküli kapcsolattal rendelkező helyi fejlesztéshez adja hozzá az alábbi ConnectionStrings szakaszt a appsettings.json fájlhoz. Cserélje le a <database-server-name> és <database-name> helyőrzőket a saját értékeire.

"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\";"
}

A jelszó nélküli kapcsolati sztring beállítja a Authentication="Active Directory Default"konfigurációs értékét, amely arra utasítja a Microsoft.Data.SqlClient könyvtárat, hogy egy DefaultAzureCredentialnevű osztály használatával csatlakozzon az Azure SQL Database-hez. DefaultAzureCredential engedélyezi a jelszó nélküli kapcsolatokat az Azure-szolgáltatásokhoz, és azt az Azure Identity-kódtár biztosítja, amelytől az SQL-ügyfélkódtár függ. DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyiket használja futásidőben a különböző környezetekhez.

Ha például az alkalmazás helyileg fut, DefaultAzureCredential hitelesíti a Visual Studióba bejelentkezett felhasználón vagy más helyi eszközökön, például az Azure CLI-en keresztül. Miután az alkalmazás az Azure-ra helyezésre kerül, ugyanaz a kód felderíti és alkalmazza azt a felügyelt identitást, amelyet az üzemeltetett alkalmazáshoz társítottál, és amelyet később konfigurálsz. Az Azure Identity-kódtár áttekintése ismerteti azokat a sorrendeket és helyeket, amelyeken DefaultAzureCredential hitelesítő adatokat keres.

Megjegyzés

A jelszó nélküli kapcsolati sztringek biztonságosan véglegesítik a forráskövetést, mivel nem tartalmaznak titkos kódokat, például felhasználóneveket, jelszavakat vagy hozzáférési kulcsokat.

Az Azure SQL Database-hez való csatlakozáshoz használt kód hozzáadása

Cserélje le a Program.cs fájl tartalmát a következő kódra, amely a következő fontos lépéseket hajtja végre:

  • Lekéri a jelszónélküli kapcsolati karakterláncot a appsettings.json
  • Létrehoz egy Persons táblát az adatbázisban az indítás során (csak tesztelési forgatókönyvekhez)
  • Létrehoz egy végpontot HTTP GET a táblában tárolt összes rekord lekéréséhez Persons
  • POST-végpontot HTTP hoz létre, amely új rekordokat ad hozzá a Persons táblához
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();

Végül adja hozzá a Person osztályt a Program.cs fájl aljára. Ez az osztály egyetlen rekordot jelöl az adatbázis Persons táblájában.

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

Az alkalmazás helyi futtatása és tesztelése

Az alkalmazás készen áll a helyi tesztelésre. Győződjön meg arról, hogy ugyanazzal a fiókkal jelentkezett be a Visual Studióba vagy az Azure CLI-be, mint az adatbázis rendszergazdája.

  1. Az API-projekt elindításához nyomja le a Visual Studio tetején található Futtatás gombot.

  2. A Swagger felhasználói felületén bontsa ki a POST metódust, és válassza a Kipróbáláslehetőséget.

  3. Módosítsa a JSON-mintát úgy, hogy az tartalmazza a first és last nevét. Válassza a Végrehajtás lehetőséget, ha új rekordot szeretne hozzáadni az adatbázishoz. Az API sikeres választ ad vissza.

    Képernyőkép az API teszteléséről.

  4. Bontsa ki a GET metódust a Swagger felhasználói felületén, és válassza a Kipróbálás lehetőséget. Válassza a Végrehajtáslehetőséget, ekkor az imént létrehozott személy visszatér.

Üzembe helyezés az Azure App Service-ben

Az alkalmazás készen áll az Azure-ban való üzembe helyezésre. A Visual Studio létrehozhat egy Azure App Service-t, és egyetlen munkafolyamatban telepítheti az alkalmazást.

  1. Győződjön meg arról, hogy az alkalmazás le van állítva, és sikeresen működik.

  2. A Visual Studio Megoldáskezelő ablakában kattintson a jobb gombbal a felső szintű projektcsomópontra, és válassza a Közzététellehetőséget.

  3. A közzétételi párbeszédpanelen válassza ki az üzembehelyezési célként az Azure lehetőséget, majd válassza a Továbbgombot.

  4. Az adott célhoz válassza Azure App Service (Windows)lehetőséget, majd válassza a Továbblehetőséget.

  5. A + ikonra kattintva hozzon létre egy új App Service-t, amely üzembe helyezhető, és adja meg a következő értékeket:

    • Név: Hagyja meg az alapértelmezett értéket.
    • Előfizetés neve: Válassza ki azt az előfizetést, amelyikhez üzembe kíván helyezni.
    • erőforráscsoport: Válassza Új lehetőséget, és hozzon létre egy új, msdocs-dotnet-sqlnevű erőforráscsoportot.
    • Tárhelycsomag: Válassza Új lehetőséget a tárhelycsomag párbeszédpanel megnyitásához. Hagyja meg az alapértelmezett értékeket, és válassza OKlehetőséget.
    • Az eredeti párbeszédpanel bezárásához válassza a lehetőséget. A Visual Studio létrehozza az App Service-erőforrást az Azure-ban.

    Képernyőkép a Visual Studióval való üzembe helyezésről.

  6. Az erőforrás létrehozása után győződjön meg arról, hogy ki van jelölve az appszolgáltatások listájában, majd válassza a Továbblehetőséget.

  7. Az API Management lépésben jelölje be alul a A lépés kihagyása jelölőnégyzetet, majd válassza a Befejezéslehetőséget.

  8. A Befejezés lépésben válassza a bezárása lehetőséget, ha a párbeszédpanel nem záródik be automatikusan.

  9. Válassza a Közzététel lehetőséget a közzétételi profil összesítőjének jobb felső sarkában az alkalmazás Azure-ban való üzembe helyezéséhez.

Amikor az üzembe helyezés befejeződik, a Visual Studio elindítja a böngészőt a üzemeltetett alkalmazás megjelenítéséhez, de jelenleg az alkalmazás nem működik megfelelően az Azure-ban. Az adatok lekéréséhez továbbra is konfigurálnia kell az App Service és az SQL-adatbázis közötti biztonságos kapcsolatot.

Az App Service csatlakoztatása az Azure SQL Database-hez

A következő lépések szükségesek az App Service-példány és az Azure SQL Database közötti jelszó nélküli kapcsolat létrehozásához:

  1. Felügyelt identitás létrehozása az App Service-hez. Az alkalmazás Microsoft.Data.SqlClient könyvtára automatikusan felderíti a felügyelt identitást, ugyanúgy, mint a helyi Visual Studio-felhasználót.
  2. Hozzon létre egy SQL-adatbázis-felhasználót, és társítsa azt az App Service által felügyelt identitáshoz.
  3. Sql-szerepkörök hozzárendelése az adatbázis-felhasználóhoz, amely lehetővé teszi az olvasási, írási és potenciálisan egyéb engedélyeket.

A lépések végrehajtásához több eszköz is rendelkezésre áll:

A Service Connector egy olyan eszköz, amely leegyszerűsíti a hitelesített kapcsolatokat az Azure különböző szolgáltatásai között. A Service Connector jelenleg támogatja az App Service sql-adatbázishoz való csatlakoztatását az Azure CLI-vel a az webapp connection create sql paranccsal. Ez az egyetlen parancs végrehajtja a fent említett három lépést.

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

A Service Connector által végzett módosításokat az App Service beállításai között ellenőrizheti.

  1. Navigáljon az App Service Identity oldalára. A Rendszer által hozzárendelt lapon az Állapot beállítása legyen On. Ez az érték azt jelenti, hogy a rendszer által hozzárendelt felügyelt identitás engedélyezve lett az alkalmazás számára.

  2. Lépjen az App Service Konfigurációs lapjára. A Kapcsolati sztringek lapon egy AZURE_SQL_CONNECTIONSTRINGnevű kapcsolati sztringnek kell megjelennie. Jelölje ki a Kattintással megjelenítheti szöveg értékét a létrehozott jelszó nélküli kapcsolati sztring megtekintéséhez. Ennek a kapcsolati sztringnek a neve megegyezik az alkalmazásban konfigurált névvel, így a rendszer automatikusan felderíti, amikor az Azure-ban fut.

Fontos

Bár ez a megoldás egyszerű módja a kezdésnek, nem legjobb gyakorlat a termelési szintű környezetekben. Ezekben az esetekben az alkalmazás nem végezhet el minden műveletet egyetlen emelt szintű identitás használatával. Próbálja meg implementálni a minimális jogosultság elvét úgy, hogy több identitást konfigurál bizonyos feladatokhoz adott engedélyekkel.

Az adatbázis-szerepkörök és a biztonság konfigurálásáról az alábbi forrásokban olvashat bővebben:

Az üzembe helyezett alkalmazás tesztelése

  1. Válassza a Böngészés gombot az App Service áttekintés oldal tetején, hogy elindítsa az alkalmazás gyökér URL-címét.

  2. A helyileg használt Swagger-tesztlap betöltéséhez fűzze hozzá a /swagger/index.html elérési utat az URL-címhez.

  3. GET Teszt- és POST-kérések végrehajtása annak ellenőrzéséhez, hogy a végpontok a várt módon működnek-e.

    Tipp

    Ha a tesztelés során 500 belső kiszolgálóhiba jelenik meg, annak oka az adatbázis hálózati konfigurációja lehet. Ellenőrizze, hogy a logikai kiszolgáló a Az adatbázis konfigurálása szakaszban ismertetett beállításokkal van-e konfigurálva.

Az alkalmazás mostantól helyi és üzemeltetett környezetben is csatlakozik az Azure SQL Database-hez.

Az erőforrások törlése

Ha befejezte az Azure SQL Database használatát, törölje az erőforrást a nem tervezett költségek elkerülése érdekében.

  1. Az Azure Portal keresősávjában keressen Azure SQL-, és válassza ki a megfelelő találatot.

  2. Keresse meg és jelölje ki az adatbázist az adatbázisok listájában.

  3. Az Azure SQL Database Áttekintés lapján válassza a Törléslehetőséget.

  4. Biztosan törölni szeretné az Azure... a lapon, amely megnyílik, írja be az adatbázis nevét a művelet megerősítéséhez, majd válassza a Törléslehetőséget.