Udostępnij za pomocą


Data source

Sekcja data-source definiuje szczegóły dostępu do bazy danych. Definiuje również opcje bazy danych.

Ustawienia źródła danych

Property Description
data-source Obiekt zawierający ustawienia łączności z bazą danych
data-source.database-type Baza danych używana w zapleczu: mssql, , mysqlpostgresql, , cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Parametry połączenia dla wybranego typu bazy danych
data-source.options Właściwości specyficzne dla bazy danych (na przykład opcje dla programu SQL Server, usługi Cosmos DB itp.)
data-source.options.database Nazwa bazy danych Azure Cosmos DB for NoSQL (wymagana, gdy database-type = cosmosdb_nosql)
data-source.options.container Nazwa kontenera usługi Azure Cosmos DB for NoSQL (wymagana, gdy database-type = cosmosdb_nosql)
data-source.options.schema Ścieżka do pliku schematu GraphQL (wymagane, gdy database-type = cosmosdb_nosql)
data-source.options.set-session-context Umożliwia wysyłanie oświadczeń tokenu internetowego JSON (JWT) jako kontekstu sesji (tylko program SQL Server)
data-source.health Obiekt konfigurując kontrole kondycji źródła danych
data-source.health.enabled Włącza punkt końcowy sprawdzania kondycji
data-source.health.name Identyfikator używany w raporcie kondycji
data-source.health.threshold-ms Maksymalny czas trwania w milisekundach dla zapytania sprawdzania kondycji

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 obiekt ✔️ Yes -

Nested properties

Parent Property Typ Required Default
data-source database-type wyliczenie ✔️ Yes None
data-source connection-string ciąg ✔️ Yes None
data-source options obiekt ❌ Nie None

Property values

database-type Description Min Version
mssql SQL w sieci szkieletowej -
mssql Azure SQL Database -
mssql Zarządzane wystąpienie Azure SQL -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Punkt końcowy usługi SQL Analytics w sieci szkieletowej -
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>
    }
  }
}

Przykład: Azure SQL i 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.

Spożywanie SESSION_CONTEXT

W przypadku usług Azure SQL i SQL Server konstruktor interfejsu API danych może zawierać informacje o oświadczeniach w usługach 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;

Przykład: 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

Określone opcje (database, containeri schema) są specyficzne dla usługi Azure Cosmos DB.

Environment variables

Użyj zmiennych środowiskowych, aby zachować wpisy tajne zwykłego tekstu z pliku konfiguracji.

Tip

Konstruktor interfejsu API danych obsługuje oba pliki function.env](../reference-functions.md#env) and [.@env()

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

Connection resiliency

Konstruktor interfejsu API danych używa wycofywania wykładniczego w celu ponawiania żądań bazy danych po błędach przejściowych.

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

Tożsamości usługi zarządzanej (MSI)

Tożsamości usługi zarządzanej (MSI) są obsługiwane przez funkcję zdefiniowaną DefaultAzureCredential w Azure.Identity bibliotece. Dowiedz się więcej o tożsamościach zarządzanych w usłudze Microsoft Entra for Azure SQL.

tożsamości zarządzane 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>;.

tożsamość zarządzana 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;.

Kondycja (źródło danych)

Parent Property Typ Required Default
data-source health obiekt No

Konstruktor interfejsu API danych obsługuje wiele plików konfiguracji, z których każdy ma własne źródło danych. Ten blok konfiguracji umożliwia każdemu źródle danych posiadanie własnej konfiguracji kondycji.

Nested properties

Parent Property Typ Required Default
data-source.health enabled boolean No true
data-source.health name ciąg No database-type
data-source.health threshold-ms liczba całkowita No 1000

Check name

Ponieważ wiele plików konfiguracji może wskazywać źródła danych tego samego typu, te źródła danych nie mogą być rozróżniane w raporcie kondycji. Służy name do przypisywania unikatowej, możliwej do zidentyfikowania etykiety używanej tylko w raporcie kondycji.

Check behavior

Najprostsze możliwe zapytanie — specyficzne dla typu bazy danych — jest wykonywane względem danego źródła danych w celu sprawdzenia, czy połączenie można otworzyć. threshold-ms Użyj właściwości , aby skonfigurować maksymalny dopuszczalny czas trwania (w milisekundach) dla tego zapytania do ukończenia.

Format

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