Compartir a través de


Data source

En la sección se data-source definen los detalles del acceso a la base de datos. También define las opciones de la base de datos.

Configuración del origen de datos

Property Description
data-source Objeto que contiene la configuración de conectividad de la base de datos
data-source.database-type Base de datos usada en el back-end: mssql, postgresql, mysql, , cosmosdb_nosql, cosmosdb_postgresql
data-source.connection-string Cadena de conexión para el tipo de base de datos seleccionado
data-source.options Propiedades específicas de la base de datos (por ejemplo, opciones para SQL Server, Cosmos DB, etc.)
data-source.options.database Nombre de la base de datos de Azure Cosmos DB para NoSQL (se requiere cuando database-type = cosmosdb_nosql)
data-source.options.container Nombre del contenedor de Azure Cosmos DB para NoSQL (necesario cuando database-type = cosmosdb_nosql)
data-source.options.schema Ruta de acceso al archivo de esquema graphQL (obligatorio cuando database-type = cosmosdb_nosql)
data-source.options.set-session-context Habilita el envío de notificaciones de JSON Web Token (JWT) como contexto de sesión (solo SQL Server)
data-source.health Objeto que configura comprobaciones de estado para el origen de datos
data-source.health.enabled Habilita el punto de conexión de comprobación de estado
data-source.health.name Identificador usado en el informe de estado
data-source.health.threshold-ms Duración máxima en milisegundos para la consulta de comprobación de estado

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 ❌ No None

Property values

database-type Description Min Version
mssql SQL en Fabric -
mssql Azure SQL Database -
mssql Azure SQL MI -
mssql SQL Server 2016
dwsql Azure Synapse Analytics -
dwsql Fabric Warehouse -
dwsql Punto de conexión de SQL Analytics de Fabric -
postgresql PostgreSQL ver. 11
mysql MySQL ver. 8
cosmosdb_nosql Azure Cosmos DB para NoSQL -
cosmosdb_postgresql Azure Cosmos DB para PostgreSQL -

Format

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

Ejemplo: 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.

Consumir SESSION_CONTEXT

Para Azure SQL y SQL Server, el generador de API de datos puede incluir información de notificaciones en 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;

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

Las "opciones" especificadas (database, containery schema) son específicas de Azure Cosmos DB.

Environment variables

Use variables de entorno para mantener los secretos de texto sin formato del archivo de configuración.

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

Connection resiliency

Data API Builder usa retroceso exponencial para reintentar las solicitudes de base de datos después de errores transitorios.

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

Identidades de servicio administradas (MSI)

Las identidades de servicio administradas (MSI) se admiten con DefaultAzureCredential definidas en Azure.Identity la biblioteca. Obtenga más información sobre las identidades administradas en Microsoft Entra para Azure SQL.

User-Assigned identidades administradas (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>;.

identidad administrada de 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;.

Estado (origen de datos)

Parent Property Type Required Default
data-source health object No

Data API Builder admite varios archivos de configuración, cada uno con su propio origen de datos. Este bloque de configuración permite que cada origen de datos tenga su propia configuración de estado.

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

Dado que varios archivos de configuración pueden apuntar a orígenes de datos del mismo tipo, esos orígenes de datos no se pueden distinguir en el informe de estado. Use name para asignar una etiqueta única y identificable que solo se usa en el informe de mantenimiento.

Check behavior

La consulta más sencilla posible,específica del tipo de base de datos, se ejecuta en el origen de datos especificado para validar que se puede abrir la conexión. Use la threshold-ms propiedad para configurar la duración máxima aceptable (en milisegundos) para que se complete esa consulta.

Format

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