Freigeben über


Data source

Der data-source Abschnitt definiert die Datenbankzugriffsdetails. Außerdem werden Datenbankoptionen definiert.

Datenquelleneinstellungen

Property Description
data-source Objekt, das Datenbankkonnektivitätseinstellungen enthält
data-source.database-type Im Back-End verwendete Datenbank: mssql, postgresql, mysql, , cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Verbindungszeichenfolge für den ausgewählten Datenbanktyp
data-source.options Datenbankspezifische Eigenschaften (z. B. Optionen für SQL Server, Cosmos DB usw.)
data-source.options.database Name der Azure Cosmos DB für NoSQL-Datenbank (erforderlich, wenn database-type = cosmosdb_nosql)
data-source.options.container Name des Azure Cosmos DB für NoSQL-Container (erforderlich, wenn database-type = cosmosdb_nosql)
data-source.options.schema Pfad zur GraphQL-Schemadatei (erforderlich, wenn database-type = cosmosdb_nosql)
data-source.options.set-session-context Aktiviert das Senden von JSON-Webtokenansprüchen (JWT) als Sitzungskontext (nur SQL Server)
data-source.health Objektkonfiguration von Integritätsprüfungen für die Datenquelle
data-source.health.enabled Aktiviert den Integritätsprüfungsendpunkt.
data-source.health.name Bezeichner, der im Integritätsbericht verwendet wird
data-source.health.threshold-ms Maximale Dauer in Millisekunden für die Integritätsprüfungsabfrage

Format overview

{
  "data-source": {
    "database-type": <string>,
    "connection-string": <string>,
    "options": {
      // mssql only
      "set-session-context": <true> (default) | <false>,
      // cosmosdb_nosql only
      "database": <string>,
      "container": <string>,
      "schema": <string>
    },
    "health": {
      "enabled": <true> (default) | <false>,
      "name": <string>,
      "threshold-ms": <integer; default: 1000>
    }
  },
  "data-source-files": ["<string>"]
}

Data source

Parent Property Type Required Default
$root database-source object ✔️ Yes -

Nested properties

Parent Property Type Required Default
data-source database-type enum ✔️ Yes None
data-source connection-string string ✔️ Yes None
data-source options object ❌ Nein None

Property values

database-type Description Min Version
mssql SQL in Fabric -
mssql Azure SQL-Datenbank -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Fabric SQL Analytics-Endpunkt -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB für NoSQL-Datenbanklösungen -
cosmosdb_postgresql Azure Cosmos DB für PostgreSQL -

Format

{
  "data-source": {
    "database-type": <string>,
    "connection-string": <string>,
    "options": {
      "<key-name>": <string>
    }
  }
}

Beispiel: Azure SQL & SQL Server

"data-source": {
  "database-type": "mssql",
  "connection-string": "Server=tcp:myserver.database.windows.net,1433;Initial Catalog=MyDatabase;User ID=MyUser;Password=MyPassword;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;",
    "options": {
      "set-session-context": true
    }
}

Note

We use SqlClient for Azure SQL and SQL Server, which supports these connection strings variants.

Verbrauchen SESSION_CONTEXT

Für Azure SQL und SQL Server kann der Daten-API-Generator Anspruchsinformationen in SQL enthalten SESSION_CONTEXT.

CREATE PROC GetUser @userId INT AS
BEGIN
    -- Use claims
    IF SESSION_CONTEXT(N'user_role') = 'admin' 
    BEGIN
        RAISERROR('Unauthorized access', 16, 1);
    END

    SELECT Id, Name, Age, IsAdmin
    FROM Users
    WHERE Id = @userId;
END;

Beispiel: Azure Cosmos DB

"data-source": {
  "database-type": "cosmosdb_nosql",
  "connection-string": "@env('SQL_CONNECTION_STRING')",
  "options": {
    "database": "Your_CosmosDB_Database_Name",
    "container": "Your_CosmosDB_Container_Name",
    "schema": "Path_to_Your_GraphQL_Schema_File"
  }
}

Note

Die angegebenen "Optionen" (database, containerund schema) sind spezifisch für Azure Cosmos DB.

Environment variables

Verwenden Sie Umgebungsvariablen, um geheime Nur-Text-Schlüssel aus Ihrer Konfigurationsdatei zu behalten.

Tip

Der Daten-API-Generator unterstützt sowohl die @env() Dateien "function.env](../reference-functions.md#env) and [".

"data-source": {
  "database-type": "mssql",
  "connection-string": "@env('SQL_CONNECTION_STRING')"
}

Connection resiliency

Der Daten-API-Generator verwendet exponentielles Backoff, um Datenbankanforderungen nach vorübergehenden Fehlern erneut zu versuchen.

Attempts First Second Third Fourth Fifth
Seconds 2s 4s 8s 16s 32s

Verwaltete Dienstidentitäten (MSI)

Verwaltete Dienstidentitäten (MANAGED Service Identities, MSI) werden in DefaultAzureCredential der Azure.Identity Bibliothek definiert unterstützt. Erfahren Sie mehr über verwaltete Identitäten in Microsoft Entra für Azure SQL.

User-Assigned Verwaltete Identitäten (UAMI)

For User Assigned Managed Identity, append the Authentication and User Id properties to your connection string while substituting in your User Assigned Managed Identity's client id: Authentication=Active Directory Managed Identity; User Id=<UMI_CLIENT_ID>;.

System-Assigned Managed Identity (SAMI)

For System Assigned Managed Identity, append the Authentication property and exclude the UserId and Password arguments from your connection string: Authentication=Active Directory Managed Identity;.

Integrität (Datenquelle)

Parent Property Type Required Default
data-source health object No

Der Daten-API-Generator unterstützt mehrere Konfigurationsdateien, die jeweils über eine eigene Datenquelle verfügen. Mit diesem Konfigurationsblock kann jede Datenquelle über eine eigene Integritätskonfiguration verfügen.

Nested properties

Parent Property Type Required Default
data-source.health enabled boolean No true
data-source.health name string No database-type
data-source.health threshold-ms integer No 1000

Check name

Da mehrere Konfigurationsdateien auf Datenquellen desselben Typs verweisen können, können diese Datenquellen im Integritätsbericht nicht unterschieden werden. Dient name zum Zuweisen einer eindeutigen, identifizierbaren Bezeichnung, die nur im Integritätsbericht verwendet wird.

Check behavior

Die einfachste abfrage , die für den Datenbanktyp spezifisch ist, wird für die angegebene Datenquelle ausgeführt, um zu überprüfen, ob die Verbindung geöffnet werden kann. Verwenden Sie die threshold-ms Eigenschaft, um die maximal zulässige Dauer (in Millisekunden) für diese Abfrage zu konfigurieren.

Format

{
  "data-source": {
    "health": {
      "enabled": <true> (default) | <false>,
      "name": <string>,
      "threshold-ms": <integer; default: 1000>
    }
  }
}