Aracılığıyla paylaş


Data source

data-source bölümünde veritabanı erişim ayrıntıları tanımlanmıştır. Ayrıca veritabanı seçeneklerini tanımlar.

Veri kaynağı ayarları

Property Description
data-source Veritabanı bağlantı ayarlarını içeren nesne
data-source.database-type Arka uçta kullanılan veritabanı: mssql, postgresql, mysql, , cosmosdb_nosql, cosmosdb_postgresql
data-source.connection-string Seçili veritabanı türü için bağlantı dizesi
data-source.options Veritabanına özgü özellikler (örneğin, SQL Server, Cosmos DB, vb.)
data-source.options.database NoSQL için Azure Cosmos DB veritabanının adı (gerektiğinde database-type = cosmosdb_nosql)
data-source.options.container NoSQL için Azure Cosmos DB kapsayıcısının adı (gerektiğinde database-type = cosmosdb_nosql)
data-source.options.schema GraphQL şema dosyasının yolu (için database-type = cosmosdb_nosqlgereklidir)
data-source.options.set-session-context JSON Web Belirteci (JWT) taleplerini oturum bağlamı olarak göndermeyi etkinleştirir (yalnızca SQL Server)
data-source.health Veri kaynağı için sistem durumu denetimlerini yapılandıran nesne
data-source.health.enabled Sistem durumu denetimi uç noktasını etkinleştirir
data-source.health.name Sistem durumu raporunda kullanılan tanımlayıcı
data-source.health.threshold-ms Sistem durumu denetimi sorgusu için milisaniye cinsinden en uzun süre

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 object ✔️ 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 object ❌ Hayır None

Property values

database-type Description Min Version
mssql Dokuda SQL -
mssql Azure SQL Veritabanı -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Doku SQL Analytics uç noktası -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql NoSQL için Azure Cosmos DB -
cosmosdb_postgresql PostgreSQL için Azure Cosmos DB -

Format

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

Örnek: 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.

Tüketen SESSION_CONTEXT

Azure SQL ve SQL Server için, Veri API oluşturucusu SQL'in SESSION_CONTEXTtalep bilgilerini içerebilir.

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;

Örnek: 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

Belirtilen "seçenekler" (database, containerve schema) Azure Cosmos DB'ye özeldir.

Environment variables

Düz metin gizli dizilerini yapılandırma dosyanızın dışında tutmak için ortam değişkenlerini kullanın.

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

Connection resiliency

Veri API oluşturucusu, geçici hatalardan sonra veritabanı isteklerini yeniden denemek için Üstel Geri Alma kullanır.

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

Yönetilen Hizmet Kimlikleri (MSI)

Yönetilen Hizmet Kimlikleri (MSI) kitaplıkta Azure.Identity tanımlı olarak DefaultAzureCredential desteklenir. Azure SQL için Microsoft Entra'da Yönetilen kimlikler hakkında daha fazla bilgi edinin.

yönetilen kimlikleri (UAMI) User-Assigned

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 Yönetilen Kimlik (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;.

Sistem Durumu (Veri kaynağı)

Parent Property Type Required Default
data-source health object No

Veri API oluşturucusu, her biri kendi veri kaynağına sahip olan birden çok yapılandırma dosyasını destekler. Bu yapılandırma bloğu, her veri kaynağının kendi sistem durumu yapılandırmasına sahip olmasını sağlar.

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

Birden çok yapılandırma dosyası aynı türdeki veri kaynaklarını işaret ettiğinden, bu veri kaynakları sistem durumu raporunda ayırt edilemez. Yalnızca sistem durumu raporunda kullanılan benzersiz, tanımlanabilir bir etiket atamak için kullanın name .

Check behavior

Veritabanı türüne özgü olabilecek en basit sorgu, bağlantının açıldığını doğrulamak için verilen veri kaynağında yürütülür. Bu sorgunun threshold-ms tamamlanması için kabul edilebilir en uzun süreyi (milisaniye olarak) yapılandırmak için özelliğini kullanın.

Format

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