Partager via


Data source

La data-source section définit les détails de l’accès à la base de données. Il définit également les options de base de données.

Paramètres de la source de données

Property Description
data-source Objet contenant les paramètres de connectivité de base de données
data-source.database-type Base de données utilisée dans le serveur principal : mssql, postgresql, mysql, cosmosdb_nosql, cosmosdb_postgresql
data-source.connection-string Chaîne de connexion pour le type de base de données sélectionné
data-source.options Propriétés spécifiques à la base de données (par exemple, options pour SQL Server, Cosmos DB, etc.)
data-source.options.database Nom de la base de données Azure Cosmos DB pour NoSQL (obligatoire lorsque database-type = cosmosdb_nosql)
data-source.options.container Nom du conteneur Azure Cosmos DB pour NoSQL (obligatoire quand database-type = cosmosdb_nosql)
data-source.options.schema Chemin d’accès au fichier de schéma GraphQL (obligatoire lorsque database-type = cosmosdb_nosql)
data-source.options.set-session-context Active l’envoi de revendications JSON Web Token (JWT) en tant que contexte de session (SQL Server uniquement)
data-source.health Objet configurant des vérifications d’intégrité pour la source de données
data-source.health.enabled Active le point de terminaison de contrôle d’intégrité
data-source.health.name Identificateur utilisé dans le rapport d’intégrité
data-source.health.threshold-ms Durée maximale en millisecondes pour la requête de contrôle d’intégrité

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 ❌ Non None

Property values

database-type Description Min Version
mssql SQL dans Fabric -
mssql Azure SQL Database -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Point de terminaison Fabric SQL Analytics -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB pour NoSQL -
cosmosdb_postgresql Azure Cosmos DB pour PostgreSQL -

Format

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

Exemple : 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.

Consommer SESSION_CONTEXT

Pour Azure SQL et SQL Server, le générateur d’API de données peut inclure des informations sur les revendications dans les fichiers SESSION_CONTEXTSQL.

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;

Exemple : 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

Les « options » spécifiées (database, containeret schema) sont spécifiques à Azure Cosmos DB.

Environment variables

Utilisez des variables d’environnement pour empêcher les secrets de texte brut de votre fichier de configuration.

Tip

Le générateur d’API de données prend en charge les @env() fichiers function.env](../reference-functions.md#env) and [.

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

Connection resiliency

Le générateur d’API de données utilise l’interruption exponentielle pour réessayer les demandes de base de données après des erreurs temporaires.

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

Identités de service managées (MSI)

Les identités de service managé (MSI) sont prises en charge avec DefaultAzureCredential définies dans la Azure.Identity bibliothèque. En savoir plus sur les identités managées dans Microsoft Entra pour Azure SQL.

identités managées User-Assigned (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;.

Intégrité (source de données)

Parent Property Type Required Default
data-source health object No

Le générateur d’API de données prend en charge plusieurs fichiers de configuration, chacun avec sa propre source de données. Ce bloc de configuration permet à chaque source de données d’avoir sa propre configuration d’intégrité.

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

Étant donné que plusieurs fichiers de configuration peuvent pointer vers des sources de données du même type, ces sources de données ne peuvent pas être distinguées dans le rapport d’intégrité. Permet name d’attribuer une étiquette unique et identifiable utilisée uniquement dans le rapport d’intégrité.

Check behavior

La requête la plus simple, propre au type de base de données, est exécutée sur la source de données donnée pour vérifier que la connexion peut être ouverte. Utilisez la threshold-ms propriété pour configurer la durée maximale acceptable (en millisecondes) pour que cette requête se termine.

Format

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