Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Bagian menentukan data-source detail akses database. Ini juga mendefinisikan opsi database.
Pengaturan sumber data
| Property | Description |
|---|---|
| data-source | Objek yang berisi pengaturan konektivitas database |
| data-source.database-type | Database yang digunakan di backend: mssql, , postgresql, mysql, cosmosdb_nosqlcosmosdb_postgresql |
| data-source.connection-string | String koneksi untuk jenis database yang dipilih |
| data-source.options | Properti khusus database (misalnya, opsi untuk SQL Server, Cosmos DB, dll.) |
| data-source.options.database | Nama Azure Cosmos DB untuk database NoSQL (diperlukan saat database-type = cosmosdb_nosql) |
| data-source.options.container | Nama kontainer Azure Cosmos DB for NoSQL (diperlukan saat database-type = cosmosdb_nosql) |
| data-source.options.schema | Jalur ke file skema GraphQL (diperlukan saat database-type = cosmosdb_nosql) |
| data-source.options.set-session-context | Memungkinkan pengiriman klaim JSON Web Token (JWT) sebagai konteks sesi (hanya SQL Server) |
| data-source.health | Objek yang mengonfigurasi pemeriksaan kesehatan untuk sumber data |
| data-source.health.enabled | Mengaktifkan titik akhir pemeriksaan kesehatan |
| data-source.health.name | Pengidentifikasi yang digunakan dalam laporan kesehatan |
| data-source.health.threshold-ms | Durasi maksimum dalam milidetik untuk kueri pemeriksaan kesehatan |
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 |
objek | ✔️ 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 |
objek | ❌ Tidak | None |
Property values
database-type |
Description | Min Version |
|---|---|---|
mssql |
SQL in Fabric | - |
mssql |
Azure SQL Database | - |
mssql |
Azure SQL MI | - |
mssql |
SQL Server | 2016 |
dwsql |
Azure Synapse Analytics | - |
dwsql |
Fabric Warehouse | - |
dwsql |
Titik akhir 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>
}
}
}
Contoh: 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.
Mengkonsumsi SESSION_CONTEXT
Untuk Azure SQL dan SQL Server, penyusun API Data dapat menyertakan info Klaim di 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;
Contoh: 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
"Opsi" yang ditentukan (database, container, dan schema) khusus untuk Azure Cosmos DB.
Environment variables
Gunakan variabel lingkungan untuk menyimpan rahasia teks biasa dari file konfigurasi Anda.
Tip
Penyusun API Data mendukung @env() file function.env](../reference-functions.md#env) and ['.
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
Connection resiliency
Pembuat API Data menggunakan Backoff Eksponensial untuk mencoba kembali permintaan database setelah kesalahan sementara.
| Attempts | First | Second | Third | Fourth | Fifth |
|---|---|---|---|---|---|
| Seconds | 2s | 4s | 8s | 16s | 32s |
Identitas Layanan Terkelola (MSI)
Identitas Layanan Terkelola (MSI) didukung dengan DefaultAzureCredential yang ditentukan dalam Azure.Identity pustaka. Pelajari selengkapnya tentang Identitas terkelola di Microsoft Entra untuk Azure SQL.
User-Assigned Identitas Terkelola (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>;.
identitas terkelola 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;.
Kesehatan (Sumber data)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
data-source |
health |
objek | No | – |
Penyusun API Data mendukung beberapa file konfigurasi, masing-masing dengan sumber datanya sendiri. Blok konfigurasi ini memungkinkan setiap sumber data memiliki konfigurasi kesehatannya sendiri.
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
Karena beberapa file konfigurasi dapat menunjuk ke sumber data dengan jenis yang sama, sumber data tersebut tidak dapat dibedakan dalam laporan kesehatan. Gunakan name untuk menetapkan label unik yang dapat diidentifikasi yang hanya digunakan dalam laporan kesehatan.
Check behavior
Kueri paling sederhana—khusus untuk jenis database—dijalankan terhadap sumber data yang diberikan untuk memvalidasi bahwa koneksi dapat dibuka.
threshold-ms Gunakan properti untuk mengonfigurasi durasi maksimum yang dapat diterima (dalam milidetik) agar kueri tersebut selesai.
Format
{
"data-source": {
"health": {
"enabled": <true> (default) | <false>,
"name": <string>,
"threshold-ms": <integer; default: 1000>
}
}
}