Dela via


Aspire Azure SQL-integrering

Inkluderar:Värdintegrering ingår Värdintegrering &–& integrering ingår integration

Azure SQL är en familj av hanteringssystem för relationsdatabaser som körs i Azure molnet. Databassystemen är PaaS-produkter (Plattform som en tjänst) som gör det möjligt för databasadministratörer att implementera mycket skalbara och tillgängliga databaser utan att själva underhålla komplexa infrastrukturer. Hosting-integreringen AspireAzureSQL Serverinnehåller metoder för att skapa en ny Azure databasserver och databaser från kod i ditt Aspire AppHost-projekt. I ett tidskrävande projekt kan du använda klientintegrering AspireSQL Server på samma sätt som för andra SQL Server instanser.

Integrering av värdtjänster

SQL-värdintegreringsmodellen Azure modellerar Azure SQL-servern som en AzureSqlServerResource-typ och databasen som en AzureSqlDatabaseResource-typ. Om du vill komma åt dessa typer och API:er lägger du till 📦Aspire. Hosting.Azure. Sql NuGet-paket i AppHost-projektet .

dotnet add package Aspire.Hosting.Azure.Sql

Mer information finns i dotnet lägg till paket eller Hantera paketberoenden i .NET applikationer.

SQL-värdintegrering Azure är beroende av 📦Aspire. Hosting.SqlServer NuGet-paketet utökar det till att stödja Azure. Allt du kan göra med AspireSQL Server integrering och AspireSQL ServerEntity Framework Core integrering kan du också göra med den här integreringen.

Lägga till Azure SQL Server-resurs och databasresurs

I Ditt AppHost-projekt anropar du AddAzureSqlServer för att lägga till och returnera en Azure SQL Server-resursbyggare. Länka ett anrop till den returnerade resursbyggaren till AddDatabaseför att lägga till en Azure SQL-databasresurs:

var azureSql = builder.AddAzureSqlServer("azuresql")
                      .AddDatabase("database");

var myService = builder.AddProject<Projects.MyService>()
                       .WithReference(azureSql);

Föregående anrop till AddAzureSqlServer konfigurerar SQL Server-resursen Azure som ska distribueras som en Azure SQL Database-server.

Viktigt!

Som standard konfigurerar AddAzureSqlServer det Microsoft Entra ID-autentisering. Detta kräver ändringar i program som behöver ansluta till dessa resurser. Mer information finns i Client integration.

Tips/Råd

När du anropar AddAzureSqlServeranropar AddAzureProvisioning den implicit – vilket lägger till stöd för att generera Azure resurser dynamiskt under appstart. Appen måste konfigurera lämplig prenumeration och plats. För mer information, se Lokal tillhandahållande: Konfiguration.

Ansluta till en befintlig Azure SQL-server

Du kan ha en befintlig Azure SQL Database-tjänst som du vill ansluta till. Du kan kedja en anropning för att annotera att din AzureSqlServerResource är en befintlig resurs:

var builder = DistributedApplication.CreateBuilder(args);

var existingSqlServerName = builder.AddParameter("existingSqlServerName");
var existingSqlServerResourceGroup = builder.AddParameter("existingSqlServerResourceGroup");

var sqlserver = builder.AddAzureSqlServer("sqlserver")
                       .AsExisting(existingSqlServerName, existingSqlServerResourceGroup)
                       .AddDatabase("database");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(sqlserver);

// After adding all resources, run the app...

Viktigt!

När du anropar RunAsExisting, PublishAsExistingeller AsExisting metoder för att arbeta med resurser som redan finns i din Azure prenumeration, måste du lägga till vissa konfigurationsvärden i AppHost för att säkerställa att Aspire de kan hittas. De nödvändiga konfigurationsvärdena är SubscriptionId, AllowResourceGroupCreation, ResourceGroup och Location. Om du inte anger dem, visas "Konfiguration saknas"-fel på instrumentpanelen Aspire. Mer information om hur du anger dem finns i Konfiguration.

Mer information om hur du behandlar Azure SQL Database-resurser som befintliga resurser finns i Använda befintliga Azure resurser.

Anmärkning

Du kan också lägga till en anslutningssträng i AppHost i stället för att representera en Azure SQL Database-resurs. Den här metoden är svagt skriven och fungerar inte med rolltilldelningar eller infrastrukturanpassningar. För mer information, se Lägg till befintliga Azure resurser med anslutningssträngar.

Köra Azure SQL Server-resursen som en container

Värdintegreringen AzureSQL Server stöder körning av Azure SQL Server som en lokal container. Detta är fördelaktigt för situationer där du vill köra Azure SQL-servern lokalt i utvecklings- och testsyfte, så att du inte behöver etablera en Azure resurs eller ansluta till en befintlig Azure SQL-server.

Om du vill köra Azure SQL-servern som en container anropar du RunAsContainer metoden:

var builder = DistributedApplication.CreateBuilder(args);

var azureSql = builder.AddAzureSqlServer("azuresql")
                      .RunAsContainer();

var azureSqlData = azureSql.AddDatabase("database");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(azureSqlData);

Föregående kod konfigurerar en Azure SQL Database-resurs att köras lokalt i en container.

Tips/Råd

Metoden RunAsContainer är användbar för lokal utveckling och testning. API:et exponerar en valfri delegering som gör att du kan anpassa den underliggande SqlServerServerResource-konfigurationen. Du kan till exempel lägga till en datavolym eller databindningspunkt. För mer information, se avsnittet AspireSQL Server om värdintegrering.

Client integration

Kom igång med AspireSQL Server-klientintegrering genom att installera 📦Aspire. Microsoft.Data.SqlClient NuGet-paket i det klientkrävande projektet, dvs. projektet för det program som använder SQL Server-klienten. SQL Server-klientintegrering registrerar en SqlConnection instans som du kan använda för att interagera med SQL Server.

dotnet add package Aspire.Microsoft.Data.SqlClient

Lägg till SQL Server klient

I Program.cs-filen för ditt klientkonsumerande projekt anropar du AddSqlServerClient-tilläggsmetoden på valfri IHostApplicationBuilder för att registrera en SqlConnection för användning via beroendeinjektionscontainern. Metoden tar en parameter för anslutningsnamn.

builder.AddSqlServerClient(connectionName: "database");

Tips/Råd

Parametern connectionName måste matcha namnet som används när du lägger till databasresursen SQL Server i AppHost-projektet. Med andra ord, när du anropar AddDatabase och anger ett namn på database ska samma namn användas när du anropar AddSqlServerClient. För mer information, se Lägg till resurs SQL Server och databasresurs.

Du kan sedan hämta instansen SqlConnection genom beroendeinjektion. Om du till exempel vill hämta anslutningen från en exempeltjänst:

public class ExampleService(SqlConnection connection)
{
    // Use connection...
}

Mer information om beroendeinmatning finns i .NET beroendeinmatning.

Lägg till kodad SQL Server-klient

Det kan finnas situationer där du vill registrera flera SqlConnection instanser med olika anslutningsnamn. Om du vill registrera nyckelade SQL Server klienter anropar du metoden AddKeyedSqlServerClient:

builder.AddKeyedSqlServerClient(name: "mainDb");
builder.AddKeyedSqlServerClient(name: "loggingDb");

Viktigt!

När du använder nyckelade tjänster förväntas din SQL Server resurs ha konfigurerat två namngivna databaser, en för mainDb och en för loggingDb.

Sedan kan du hämta SqlConnection-instans genom dependency injection. Om du till exempel vill hämta anslutningen från en exempeltjänst:

public class ExampleService(
    [FromKeyedServices("mainDb")] SqlConnection mainDbConnection,
    [FromKeyedServices("loggingDb")] SqlConnection loggingDbConnection)
{
    // Use connections...
}

Mer information om nyckeltjänster finns i .NET beroendeinjektion: Nyckeltjänster.

Konfiguration

Den AspireSQL Server integreringen innehåller flera alternativ för att konfigurera anslutningen baserat på kraven och konventionerna i ditt projekt.

Använda en anslutningssträng

När du använder en anslutningssträng från ConnectionStrings-konfigurationsavsnittet kan du ange namnet på anslutningssträngen när du anropar metoden AddSqlServerClient:

builder.AddSqlServerClient(connectionName: "sql");

Sedan hämtas anslutningssträngen från ConnectionStrings-konfigurationsavsnittet:

{
  "ConnectionStrings": {
    "database": "Data Source=myserver;Initial Catalog=master"
  }
}

Mer information om hur du formaterar den här anslutningssträngen finns i ConnectionString.

Använda konfigurationsprovidrar

Aspire SQL Server-integreringen stöder Microsoft.Extensions.Configuration. Den läser in MicrosoftDataSqlClientSettings från konfigurationen med hjälp av Aspire:Microsoft:Data:SqlClient-nyckeln. Följande kodfragment är ett exempel på en appsettings.json fil som konfigurerar några av alternativen:

{
  "Aspire": {
    "Microsoft": {
      "Data": {
        "SqlClient": {
          "ConnectionString": "YOUR_CONNECTIONSTRING",
          "DisableHealthChecks": false,
          "DisableMetrics": true
        }
      }
    }
  }
}

Det fullständiga SQL Server klientintegreringsschemat JSON finns i Aspire. Microsoft.Data.SqlClient/ConfigurationSchema.json.

Använd inline-delegater

Du kan också delegera Action<MicrosoftDataSqlClientSettings> configureSettings för att konfigurera vissa eller alla alternativ direkt i koden, till exempel för att inaktivera hälsokontroller.

builder.AddSqlServerClient(
    "database",
    static settings => settings.DisableHealthChecks = true);

Client hälsokontroller för integrering

Integreringar aktiverar som standard Aspirehälsokontroller för alla tjänster. Mer information finns i Aspire översikten över integreringar.

Integreringen av AspireSQL Server:

  • Lägger till en hälsokontroll när MicrosoftDataSqlClientSettings.DisableHealthChecks är falseoch försöker ansluta till SQL Server.
  • Integreras med HTTP-slutpunkten /health, som anger att alla registrerade hälsokontroller måste klaras för att appen ska anses vara redo att acceptera trafik.

Observerbarhet och telemetri

Aspire integreringar konfigurerar automatiskt konfigurationer för loggning, spårning och mått, som ibland kallas grundpelarna för observerbarhet. Mer information om integreringsobservabilitet och telemetri finns i Aspire översikten över integreringar. Beroende på säkerhetskopieringstjänsten kanske vissa integreringar bara stöder vissa av dessa funktioner. Vissa integreringar stöder till exempel loggning och spårning, men inte mått. Telemetrifunktioner kan också inaktiveras med hjälp av de tekniker som visas i avsnittet Konfiguration .

Loggning / Skogsavverkning

Den AspireSQL Server integreringen aktiverar för närvarande inte loggning som standard på grund av begränsningar i Microsoft.Data.SqlClient.

Spårning

Aspire SQL Server-integreringen genererar följande spårningsaktiviteter med hjälp av OpenTelemetry:

  • OpenTelemetry.Instrumentation.SqlClient

Mätvärden

Integreringen AspireSQL Server genererar följande mått med hjälp av OpenTelemetry:

  • Microsoft.Data.SqlClient.EventSource
    • active-hard-connections
    • hard-connects
    • hard-disconnects
    • active-soft-connects
    • soft-connects
    • soft-disconnects
    • number-of-non-pooled-connections
    • number-of-pooled-connections
    • number-of-active-connection-pool-groups
    • number-of-inactive-connection-pool-groups
    • number-of-active-connection-pools
    • number-of-inactive-connection-pools
    • number-of-active-connections
    • number-of-free-connections
    • number-of-stasis-connections
    • number-of-reclaimed-connections

Se även