Поделиться через


Data source

В data-source разделе определяются сведения о доступе к базе данных. Он также определяет параметры базы данных.

Параметры источника данных

Property Description
data-source Объект, содержащий параметры подключения к базе данных
data-source.database-type База данных, используемая в серверной части: mssql, postgresql, mysqlcosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Строка подключения для выбранного типа базы данных
data-source.options Свойства, относящиеся к базе данных (например, параметры SQL Server, Cosmos DB и т. д.)
data-source.options.database Имя базы данных Azure Cosmos DB для NoSQL (необходимо, если database-type = cosmosdb_nosql)
data-source.options.container Имя контейнера Azure Cosmos DB для NoSQL (необходимо, если database-type = cosmosdb_nosql)
data-source.options.schema Путь к файлу схемы GraphQL (необходимо, если database-type = cosmosdb_nosql)
data-source.options.set-session-context Включает отправку утверждений веб-маркера JSON (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 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 ❌ Нет None

Property values

database-type Description Min Version
mssql SQL в Fabric -
mssql База данных SQL Azure -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Конечная точка Аналитики SQL Fabric -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB для NoSQL -
cosmosdb_postgresql Azure Cosmos DB для PostgreSQL -

Format

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

Пример: SQL Azure и 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

Для SQL Azure и SQL Server построитель API данных может включать сведения о утверждениях SESSION_CONTEXTв SQL.

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

Построитель данных поддерживает оба @env() файла function.env](../reference-functions.md#env) and [.

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

Connection resiliency

Построитель данных использует экспоненциальную обратную передачу для повторных запросов к базе данных после временных ошибок.

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

Удостоверения управляемых служб (MSI)

Управляемые удостоверения службы (MSI) поддерживаются в DefaultAzureCredentialAzure.Identity библиотеке. Дополнительные сведения об управляемых удостоверениях в Microsoft Entra для SQL Azure.

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>;.

управляемое удостоверение 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;.

Работоспособности (источник данных)

Parent Property Type Required Default
data-source health object No

Построитель данных поддерживает несколько файлов конфигурации, каждый из которых имеет собственный источник данных. Этот блок конфигурации позволяет каждому источнику данных иметь собственную конфигурацию работоспособности.

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

Так как несколько файлов конфигурации могут указывать на источники данных одного типа, эти источники данных не могут отличаться в отчете о работоспособности. Используется name для назначения уникальной идентифицируемой метки, используемой только в отчете о работоспособности.

Check behavior

Самый простой запрос, характерный для типа базы данных, выполняется в заданном источнике данных, чтобы убедиться, что подключение можно открыть. threshold-ms Используйте свойство, чтобы настроить максимальную допустимую длительность (в миллисекундах) для завершения этого запроса.

Format

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