Sdílet prostřednictvím


Data source

Oddíl data-source definuje podrobnosti o přístupu k databázi. Definuje také možnosti databáze.

Nastavení zdroje dat

Property Description
data-source Objekt obsahující nastavení připojení k databázi
data-source.database-type Databáze použitá v back-endu: mssql, postgresqlmysql, , cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Připojovací řetězec pro vybraný typ databáze
data-source.options Vlastnosti specifické pro databázi (například možnosti PRO SQL Server, Cosmos DB atd.)
data-source.options.database Název databáze Azure Cosmos DB for NoSQL (vyžaduje se, když database-type = cosmosdb_nosql)
data-source.options.container Název kontejneru Azure Cosmos DB for NoSQL (vyžaduje se, když database-type = cosmosdb_nosql)
data-source.options.schema Cesta k souboru schématu GraphQL (vyžaduje se v případě database-type = cosmosdb_nosql)
data-source.options.set-session-context Umožňuje odesílání deklarací identity webového tokenu JSON (JWT) jako kontextu relace (pouze SQL Server).
data-source.health Objekt konfigurující kontroly stavu pro zdroj dat
data-source.health.enabled Povolí koncový bod kontroly stavu.
data-source.health.name Identifikátor použitý v sestavě stavu
data-source.health.threshold-ms Maximální doba trvání dotazu kontroly stavu v milisekundách

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 Typ Required Default
$root database-source objekt ✔️ Yes -

Nested properties

Parent Property Typ Required Default
data-source database-type výčet ✔️ Yes None
data-source connection-string řetězec ✔️ Yes None
data-source options objekt ❌ Ne None

Property values

database-type Description Min Version
mssql SQL v prostředcích infrastruktury -
mssql Azure SQL Database -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Koncový bod Fabric SQL Analytics -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB for NoSQL -
cosmosdb_postgresql Azure Cosmos DB for PostgreSQL -

Format

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

Příklad: Azure SQL a 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.

Pohlcující SESSION_CONTEXT

Pro Azure SQL a SQL Server může Tvůrce rozhraní DATA API zahrnout informace o deklaracích v SQL 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;

Příklad: 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

Zadané možnosti (database, containera schema) jsou specifické pro službu Azure Cosmos DB.

Environment variables

Pomocí proměnných prostředí udržujte tajné kódy ve formátu prostého textu mimo konfigurační soubor.

Tip

Tvůrce rozhraní Data API podporuje soubory @env() function.env](../reference-functions.md#env) and [.

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

Connection resiliency

Tvůrce rozhraní Data API používá exponenciální zpochybnění žádostí o databázi po přechodných chybách.

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

Identity spravované služby (MSI)

Identity spravované služby (MSI) jsou podporovány s definovanými DefaultAzureCredential v Azure.Identity knihovně. Přečtěte si další informace o spravovaných identitách v Microsoft Entra pro Azure SQL.

User-Assigned spravované identity (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>;.

spravovaná identita System-Assigned (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;.

Stav (zdroj dat)

Parent Property Typ Required Default
data-source health objekt No

Tvůrce rozhraní Data API podporuje více konfiguračních souborů, z nichž každý má vlastní zdroj dat. Tento blok konfigurace umožňuje každému zdroji dat mít vlastní konfiguraci stavu.

Nested properties

Parent Property Typ Required Default
data-source.health enabled boolean No true
data-source.health name řetězec No database-type
data-source.health threshold-ms integer No 1000

Check name

Vzhledem k tomu, že několik konfiguračních souborů může odkazovat na zdroje dat stejného typu, nelze tyto zdroje dat rozlišit v sestavě o stavu. Slouží name k přiřazení jedinečného identifikovatelného popisku použitého pouze ve zprávě o stavu.

Check behavior

Nejjednodušší možný dotaz – specifický pro typ databáze – se provádí na daném zdroji dat, aby bylo možné ověřit, že je možné připojení otevřít. threshold-ms Pomocí vlastnosti nakonfigurujte maximální přijatelnou dobu trvání (v milisekundách) pro dokončení dotazu.

Format

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