次の方法で共有


Data source

data-sourceセクションでは、データベース アクセスの詳細を定義します。 また、データベース オプションも定義します。

データ ソースの設定

Property Description
data-source データベース接続設定を含むオブジェクト
data-source.database-type バックエンドで使用されるデータベース: mssqlpostgresqlmysqlcosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string 選択したデータベースの種類の接続文字列
data-source.options データベース固有のプロパティ (SQL Server、Cosmos DB などのオプションなど)
data-source.options.database Azure Cosmos DB for NoSQL データベースの名前 ( database-type = cosmosdb_nosql時に必要)
data-source.options.container Azure Cosmos DB for NoSQL コンテナーの名前 ( database-type = cosmosdb_nosql時に必要)
data-source.options.schema GraphQL スキーマ ファイルへのパス ( database-type = cosmosdb_nosql時に必要)
data-source.options.set-session-context セッション コンテキストとして JSON Web トークン (JWT) 要求を送信できるようにします (SQL Server のみ)
data-source.health データ ソースの正常性チェックを構成するオブジェクト
data-source.health.enabled 正常性チェック エンドポイントを有効にします
data-source.health.name 正常性レポートで使用される識別子
data-source.health.threshold-ms 正常性チェック クエリの最大期間 (ミリ秒単位)

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 タイプ Required Default
$root database-source オブジェクト ✔️ Yes -

Nested properties

Parent Property タイプ Required Default
data-source database-type 列挙型 ✔️ Yes None
data-source connection-string 文字列 ✔️ Yes None
data-source options オブジェクト ❌ いいえ None

Property values

database-type Description Min Version
mssql Fabric の SQL -
mssql Azure SQL Database -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql 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>
    }
  }
}

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

消費 SESSION_CONTEXT

Azure SQL および SQL Server の場合、データ API ビルダーは 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;

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

指定された "オプション" (databasecontainer、および schema) は、Azure Cosmos DB に固有です。

Environment variables

環境変数を使用して、プレーンテキスト シークレットを構成ファイルから除外します。

Tip

データ API ビルダーは、 @env() 関数](../reference-functions.md#env) and [.env' ファイルの両方をサポートします。

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

Connection resiliency

データ API ビルダーは、指数バックオフを使用して、一時的なエラーの後にデータベース要求を再試行します。

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

マネージド サービス ID (MSI)

マネージド サービス ID (MSI) は、Azure.Identity ライブラリで定義されているDefaultAzureCredentialでサポートされています。 Microsoft Entra for Azure SQL のマネージド ID の詳細について説明します。

User-Assigned マネージド ID (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 マネージド ID (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;.

正常性 (データ ソース)

Parent Property タイプ Required Default
data-source health オブジェクト No

データ API ビルダーでは、複数の構成ファイルがサポートされ、それぞれに独自のデータ ソースが含まれています。 この構成ブロックを使用すると、各データ ソースに独自の正常性構成を設定できます。

Nested properties

Parent Property タイプ Required Default
data-source.health enabled boolean No true
data-source.health name 文字列 No database-type
data-source.health threshold-ms 整数 No 1000

Check name

複数の構成ファイルが同じ種類のデータ ソースを指している可能性があるため、正常性レポートではそれらのデータ ソースを区別できません。 nameを使用して、正常性レポートでのみ使用される一意の識別可能なラベルを割り当てます。

Check behavior

データベースの種類に固有の最も単純なクエリは、指定されたデータ ソースに対して実行され、接続を開くことができることを検証します。 threshold-ms プロパティを使用して、そのクエリが完了するまでの最大許容期間 (ミリ秒単位) を構成します。

Format

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