Compartilhar via


Data source

A data-source seção define os detalhes de acesso ao banco de dados. Ele também define as opções de banco de dados.

Configurações da fonte de dados

Property Description
data-source Objeto que contém configurações de conectividade de banco de dados
data-source.database-type Banco de dados usado no back-end: mssql, , postgresql, mysql, , cosmosdb_nosqlcosmosdb_postgresql
data-source.connection-string Cadeia de conexão para o tipo de banco de dados selecionado
data-source.options Propriedades específicas do banco de dados (por exemplo, opções para SQL Server, Cosmos DB etc.)
data-source.options.database Nome do banco de dados do Azure Cosmos DB para NoSQL (necessário quando database-type = cosmosdb_nosql)
data-source.options.container Nome do contêiner do Azure Cosmos DB para NoSQL (necessário quando database-type = cosmosdb_nosql)
data-source.options.schema Caminho para o arquivo de esquema GraphQL (necessário quando database-type = cosmosdb_nosql)
data-source.options.set-session-context Habilita o envio de declarações JWT (Token Web JSON) como contexto de sessão (somente SQL Server)
data-source.health Objeto configurando verificações de integridade para a fonte de dados
data-source.health.enabled Habilita o ponto de extremidade de verificação de integridade
data-source.health.name Identificador usado no relatório de integridade
data-source.health.threshold-ms Duração máxima em milissegundos para consulta de verificação de integridade

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 Tipo Required Default
$root database-source objeto ✔️ Yes -

Nested properties

Parent Property Tipo Required Default
data-source database-type enumeração ✔️ Yes None
data-source connection-string cadeia ✔️ Yes None
data-source options objeto ❌ Não None

Property values

database-type Description Min Version
mssql SQL no Fabric -
mssql Banco de Dados SQL do Azure -
mssql MI de SQL do Azure -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Ponto de extremidade da Análise de SQL do Fabric -
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>
    }
  }
}

Exemplo: SQL do 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.

Consumir SESSION_CONTEXT

Para o SQL do Azure e o SQL Server, o construtor de API de Dados pode incluir informações de Declarações no 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;

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

As "opções" especificadas (databasee containerschema) são específicas do Azure Cosmos DB.

Environment variables

Use variáveis de ambiente para manter segredos de texto sem formatação fora do arquivo de configuração.

Tip

O Construtor de API de Dados dá suporte aos @env() arquivos function.env](../reference-functions.md#env) and ['.

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

Connection resiliency

O Construtor de API de Dados usa a Retirada Exponencial para tentar novamente solicitações de banco de dados após erros transitórios.

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

MSI (Identidades de Serviço Gerenciado)

As MSI (Identidades de Serviço Gerenciadas) têm suporte com DefaultAzureCredential definido na Azure.Identity biblioteca. Saiba mais sobre identidades gerenciadas no Microsoft Entra para SQL do Azure.

User-Assigned identidades gerenciadas (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 IDENTIDADE Gerenciada (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;.

Integridade (fonte de dados)

Parent Property Tipo Required Default
data-source health objeto No

O Construtor de API de Dados dá suporte a vários arquivos de configuração, cada um com sua própria fonte de dados. Esse bloco de configuração permite que cada fonte de dados tenha sua própria configuração de integridade.

Nested properties

Parent Property Tipo Required Default
data-source.health enabled boolean No true
data-source.health name cadeia No database-type
data-source.health threshold-ms inteiro No 1000

Check name

Como vários arquivos de configuração podem apontar para fontes de dados do mesmo tipo, essas fontes de dados não podem ser distinguidas no relatório de integridade. Use name para atribuir um rótulo exclusivo e identificável usado somente no relatório de integridade.

Check behavior

A consulta mais simples possível, específica ao tipo de banco de dados, é executada na fonte de dados fornecida para validar se a conexão pode ser aberta. Use a threshold-ms propriedade para configurar a duração máxima aceitável (em milissegundos) para que essa consulta seja concluída.

Format

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