data-sourceセクションでは、データベース アクセスの詳細を定義します。 また、データベース オプションも定義します。
データ ソースの設定
| Property | Description |
|---|---|
| data-source | データベース接続設定を含むオブジェクト |
| data-source.database-type | バックエンドで使用されるデータベース: mssql、 postgresql、 mysql、 cosmosdb_nosql、 cosmosdb_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
指定された "オプション" (database、 container、および 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>
}
}
}