Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Konfigurationsinställningar som avgör körningsbeteende.
Sidnumreringsinställningar
| Property | Default | Description |
|---|---|---|
| runtime.pagination.max sidstorlek | Definierar maximala poster per sida | |
| runtime.pagination.default-page-size | Anger standardposter per svar |
REST-inställningar
| Property | Default | Description |
|---|---|---|
| runtime.rest.path | "/api" |
Bassökväg för REST-slutpunkter |
| runtime.rest.enabled | true |
Tillåter aktivering eller inaktivering av REST-begäranden för alla entiteter |
| runtime.rest.request-body-strict | true |
Tillåter inte överflödiga fält i begärandetexten när det är sant |
GraphQL-inställningar
| Property | Default | Description |
|---|---|---|
| runtime.graphql.allow-introspection | true |
Tillåter frågekörning av underliggande GraphQL-schema |
| runtime.graphql.path | "/graphql" |
Bassökväg för GraphQL-slutpunkten |
| runtime.graphql.enabled | true |
Tillåter aktivering eller inaktivering av GraphQL-begäranden för alla entiteter |
| runtime.graphql.depth-limit | null |
Maximalt tillåtet djup för en GraphQL-fråga |
| runtime.graphql.multiple-mutations.create.enabled | false |
Tillåter mutationer med flera skapande för alla entiteter |
Värdinställningar
| Property | Default | Description |
|---|---|---|
| runtime.host.max-response-size-mb | 158 |
Maximal storlek (MB) för databassvar som tillåts i ett enda resultat |
| runtime.host.mode | "production" |
Körningsläge; "production" eller "development" |
CORS-inställningar
| Property | Default | Description |
|---|---|---|
| runtime.host.cors.origins | [] |
Tillåtna CORS-ursprung |
| runtime.host.cors.allow-credentials | false |
Anger värde för Access-Control–Allow-Credentials-huvud |
Autentiseringsinställningar
| Property | Default | Description |
|---|---|---|
| runtime.host.authentication.provider | Unauthenticated |
Autentiseringsprovider |
| runtime.host.authentication.jwt.audience | null |
JWT-målgrupp |
| runtime.host.authentication.jwt.issuer | null |
JWT-utfärdare |
Cacheinställningar
| Property | Default | Description |
|---|---|---|
| runtime.cache.enabled | false |
Möjliggör cachelagring av svar globalt |
| runtime.cache.ttl-seconds | 5 |
Time to live (sekunder) för global cache |
| runtime.cache.level-2.enabled | false |
Aktiverar distribuerad nivå 2-cache globalt |
| runtime.cache.level-2.provider | "redis" |
Distribuerad cacheprovider för nivå 2-cache |
| runtime.cache.level-2.connection-string | null |
Anslutningssträng för nivå 2-cacheprovidern |
| runtime.cache.level-2.partition | null |
Valfritt partitionsnamn för att isolera distribuerat cacheutrymme |
Komprimeringsinställningar
| Property | Default | Description |
|---|---|---|
| runtime.compression.level | optimal |
HTTP-svarskomprimeringsnivå (optimal, fastesteller none) |
Inställningar för telemetri
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Application Insights-anslutningssträng |
| runtime.telemetry.application-insights.enabled | true |
Aktiverar eller inaktiverar Application Insights-telemetri |
| runtime.telemetry.open-telemetry.endpoint | null |
Url för OpenTelemetry-insamlare |
| runtime.telemetry.open-telemetry.headers | {} |
OpenTelemetry-exportrubriker |
| runtime.telemetry.open-telemetry.service-name | "dab" |
OpenTelemetry-tjänstnamn |
| runtime.telemetry.open-telemetry.exporter-protocol | "grpc" |
OpenTelemetry-protokoll ("grpc" eller "httpprotobuf") |
| runtime.telemetry.open-telemetry.enabled | true |
Aktiverar eller inaktiverar OpenTelemetry |
| runtime.telemetry.open-telemetry.enabled | true |
Aktiverar eller inaktiverar OpenTelemetry |
| runtime.telemetry.azure-log-analytics.enabled | false |
Aktiverar eller inaktiverar Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.dab-identifier | "DabLogs" |
Identifierare för DAB i Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.flush-interval-seconds | 5 |
Intervall mellan loggbatch-pushar (sekunder) |
| runtime.telemetry.azure-log-analytics.auth.custom-table-name | null |
Anpassat tabellnamn för Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id | null |
Datainsamlingsregel oföränderligt ID |
| runtime.telemetry.azure-log-analytics.auth.dce-endpoint | null |
Url för datainsamlingsslutpunkt |
| runtime.telemetry.file.enabled | false |
Aktiverar eller inaktiverar loggning av filmottagare |
| runtime.telemetry.file.path | "/logs/dab-log.txt" |
Filsökväg för telemetriloggar |
| runtime.telemetry.file.rolling-interval | "Day" |
Löpande intervall för loggfiler |
| runtime.telemetry.file.retained-file-count-limit | 1 |
Maximalt antal kvarhållna loggfiler |
| runtime.telemetry.file.file-size-limit-bytes | 1048576 |
Maximal filstorlek i byte innan den rullas |
| runtime.telemetry.log-level.namespace | null |
Åsidosättning av namnområdesspecifik loggnivå |
| runtime.health.enabled | true |
Aktiverar eller inaktiverar slutpunkten för hälsokontroll globalt |
| runtime.health.roles | null |
Tillåtna roller för den omfattande hälsoslutpunkten |
| runtime.health.cache-ttl-seconds | 5 |
Time to live (sekunder) för hälsokontrollrapportens cachepost |
| runtime.health.max-query-parallelism | 4 |
Maximalt antal samtidiga hälsokontrollfrågor (intervall: 1–8) |
MCP-inställningar
| Property | Default | Description |
|---|---|---|
| runtime.mcp.enabled | true |
Aktiverar eller inaktiverar MCP-slutpunkten globalt |
| runtime.mcp.path | "/mcp" |
Bassökväg för MCP-slutpunkten |
| runtime.mcp.description | null |
Serverbeskrivning som skickas till MCP-klienter under initieringen |
| runtime.mcp.dml-tools | true |
Aktiverar eller inaktiverar alla DML-verktyg eller ett objekt för kontroll per verktyg |
| runtime.mcp.dml-tools.describe-entiteter | true |
Aktiverar verktyget describe_entities |
| runtime.mcp.dml-tools.create-record | true |
Aktiverar verktyget create_record |
| runtime.mcp.dml-tools.read-records | true |
Aktiverar verktyget read_records |
| runtime.mcp.dml-tools.update-record | true |
Aktiverar verktyget update_record |
| runtime.mcp.dml-tools.delete-record | true |
Aktiverar verktyget delete_record |
| runtime.mcp.dml-tools.execute-entity | true |
Aktiverar verktyget execute_entity |
| runtime.mcp.dml-tools.aggregate-records | true |
Aktiverar aggregate_records -verktyget (booleskt eller objekt med fråge-timeout) |
Formatöversikt
{
"runtime": {
"pagination": {
"max-page-size": <integer|null> (default: `100000`),
"default-page-size": <integer|null> (default: `100`)
},
"rest": {
"path": <string> (default: "/api"),
"enabled": <true>|<false>,
"request-body-strict": <true>|<false> (default: `true`)
},
"graphql": {
"path": <string> (default: "/graphql"),
"enabled": <true>|<false>,
"allow-introspection": <true>|<false>,
"depth-limit": <integer|null> (default: `null`),
"multiple-mutations": {
"create": {
"enabled": <true>|<false> (default: `false`)
}
}
},
"host": {
"mode": <"production"> (default) | <"development">,
"max-response-size-mb": <integer|null> (default: `158`),
"cors": {
"origins": [ "<string>" ],
"allow-credentials": <true>|<false> (default: `false`)
},
"authentication": {
"provider": <string> (default: "Unauthenticated"),
"jwt": {
"audience": "<string>",
"issuer": "<string>"
}
}
}
},
"compression": {
"level": <"optimal"> (default) | <"fastest"> | <"none">
},
"cache": {
"enabled": <true>|<false> (default: `false`),
"ttl-seconds": <integer> (default: `5`),
"level-2": {
"enabled": <true>|<false> (default: `false`),
"provider": <"redis">,
"connection-string": <string>,
"partition": <string>
}
},
"telemetry": {
"application-insights": {
"connection-string": "<string>",
"enabled": <true>|<false> (default: `true`)
},
"open-telemetry": {
"endpoint": "<string>",
"headers": "<string>",
"service-name": <string> (default: "dab"),
"exporter-protocol": <"grpc"> (default) | <"httpprotobuf">,
"enabled": <true>|<false> (default: `true`)
},
"azure-log-analytics": {
"enabled": <true>|<false> (default: `false`),
"dab-identifier": <string> (default: "DabLogs"),
"flush-interval-seconds": <integer> (default: `5`),
"auth": {
"custom-table-name": <string>,
"dcr-immutable-id": <string>,
"dce-endpoint": <string>
}
},
"file": {
"enabled": <true>|<false> (default: `false`),
"path": <string> (default: "/logs/dab-log.txt"),
"rolling-interval": <string> (default: "Day"),
"retained-file-count-limit": <integer> (default: `1`),
"file-size-limit-bytes": <integer> (default: `1048576`)
},
"log-level": {
// namespace keys
"<namespace>": <"trace"|"debug"|"information"|"warning"|"error"|"critical"|"none"|null>
}
},
"health": {
"enabled": <true>|<false> (default: `true`),
"roles": [ "<string>" ],
"cache-ttl-seconds": <integer> (default: `5`),
"max-query-parallelism": <integer> (default: `4`)
},
"mcp": {
"enabled": <true>|<false> (default: `true`),
"path": <string> (default: `"/mcp"`),
"description": <string>,
"dml-tools": <true>|<false> | {
"describe-entities": <true>|<false> (default: `true`),
"create-record": <true>|<false> (default: `true`),
"read-records": <true>|<false> (default: `true`),
"update-record": <true>|<false> (default: `true`),
"delete-record": <true>|<false> (default: `true`),
"execute-entity": <true>|<false> (default: `true`),
"aggregate-records": <true>|<false> | {
"enabled": <true>|<false> (default: `true`),
"query-timeout": <integer> (default: `30`)
}
}
}
}
}
Läge (värdkörning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
host |
uppräkning (production | development) |
❌ Nej | production |
Utvecklingsbeteende
- Aktiverad Nitro (tidigare Banana Cake Pop) för GraphQL-testning
- Aktiverat Swagger-användargränssnitt för REST-testning
- Aktiverade anonyma hälsokontroller
- Ökad loggningsveroalitet (felsökning)
Format
{
"runtime": {
"host": {
"mode": "production" (default) | "development"
}
}
}
Maximal svarsstorlek (värdkörning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
max-response-size-mb |
integer | ❌ Nej | 158 |
Anger den maximala storleken (i megabyte) för ett givet resultat. Eftersom stora svar kan belasta systemet begränsar max-response-size-mb du den totala storleken (skiljer sig från radantal) för att förhindra överbelastning, vilket är särskilt med stora kolumner som text eller JSON.
| Value | Result |
|---|---|
| inte inställt | Använd standard |
null |
Använd standard |
integer |
Alla positiva 32-bitars heltal |
<= 0 |
Stöds inte |
Format
{
"runtime": {
"host": {
"max-response-size-mb": <integer; default: 158>
}
}
}
GraphQL (körning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
graphql |
object | ❌ Nej | - |
Global GraphQL-konfiguration.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.graphql |
enabled |
boolean | ❌ Nej | None |
runtime.graphql |
path |
string | ❌ Nej | "/graphql" |
runtime.graphql |
depth-limit |
integer | ❌ Nej | Ingen (obegränsad) |
runtime.graphql |
allow-introspection |
boolean | ❌ Nej | True |
runtime.graphql |
multiple-mutations.create.enabled |
boolean | ❌ Nej | False |
Egenskapsanteckningar
- Undersökvägar tillåts inte för egenskapen
path. - Använd
depth-limitför att begränsa kapslade frågor. - Ange
allow-introspectiontillfalseför att dölja GraphQL-schemat. - Använd
multiple-mutationsför att infoga flera entiteter i en enda mutation.
Format
{
"runtime": {
"graphql": {
"enabled": <true> (default) | <false>
"depth-limit": <integer|null> (default: `null`),
"path": <string> (default: /graphql),
"allow-introspection": <true> (default) | <false>,
"multiple-mutations": {
"create": {
"enabled": <true> | <false> (default)
}
}
}
}
}
Exempel: flera mutationer
Configuration
{
"runtime": {
"graphql": {
"multiple-mutations": {
"create": {
"enabled": true
}
}
}
},
"entities": {
"User": {
"source": "dbo.Users",
"permissions": [
{
"role": "anonymous",
"actions": ["create"] // entity permissions are required
}
]
}
}
}
GraphQL-mutation
mutation {
createUsers(input: [
{ name: "Alice", age: 30, isAdmin: true },
{ name: "Bob", age: 25, isAdmin: false },
{ name: "Charlie", age: 35, isAdmin: true }
]) {
id
name
age
isAdmin
}
}
REST (körningstid)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
rest |
object | ❌ Nej | - |
Global REST-konfiguration.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.rest |
enabled |
boolean | ❌ Nej | None |
runtime.rest |
path |
string | ❌ Nej | "/api" |
runtime.rest |
request-body-strict |
boolean | ❌ Nej | True |
Egenskapsanteckningar
- Om global
enabledärfalsespelar den enskilda entitetsnivånenabledingen roll. - Egenskapen
pathstöder inte undersökvägsvärden som/api/data. -
request-body-strictintroducerades för att förenkla .NET POCO-objekt.
request-body-strict |
Behavior |
|---|---|
true |
Extra fält i begärandetexten orsakar ett BadRequest undantag. |
false |
Extra fält i begärandetexten ignoreras. |
Format
{
"runtime": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string> (default: /api),
"request-body-strict": <true> (default) | <false>
}
}
}
Exempel: request-body-strict
- Kolumner med ett
default()värde ignoreras endast närINSERTderas värde i nyttolasten ärnull. DärförINSERTkan åtgärder idefault()kolumner, närrequest-body-strictärtrue, inte resultera i explicitanullvärden. För att utföra det här beteendet krävs enUPDATEåtgärd. - Kolumner med en
default()ignoreras inte underUPDATEoavsett nyttolastvärde. - Beräknade kolumner ignoreras alltid.
- Autogenererade kolumner ignoreras alltid.
Exempeltabell
CREATE TABLE Users (
Id INT PRIMARY KEY IDENTITY, -- auto-generated column
Name NVARCHAR(50) NOT NULL,
Age INT DEFAULT 18, -- column with default
IsAdmin BIT DEFAULT 0, -- column with default
IsMinor AS IIF(Age <= 18, 1, 0) -- computed column
);
Begär nyttolast
{
"Id": 999,
"Name": "Alice",
"Age": null,
"IsAdmin": null,
"IsMinor": false,
"ExtraField": "ignored"
}
Infoga beteende när request-body-strict = false
INSERT INTO Users (Name) VALUES ('Alice');
-- Default values for Age (18) and IsAdmin (0) are applied by the database.
-- IsMinor is ignored because it’s a computed column.
-- ExtraField is ignored.
-- The database generates the Id value.
Svarslast
{
"Id": 1, // Auto-generated by the database
"Name": "Alice",
"Age": 18, // Default applied
"IsAdmin": false, // Default applied
"IsMinor": true // Computed
}
Uppdatera beteende när request-body-strict = false
UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.
Svarslast
{
"Id": 1,
"Name": "Alice Updated",
"Age": null,
"IsAdmin": false,
"IsMinor": false // Recomputed by the database (false when age is `null`)
}
CORS (värdkörning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
cors |
object | ❌ Nej | - |
Global CORS-konfiguration.
Tip
CORS står för "Resursdelning mellan ursprung". Det är en webbläsarsäkerhetsfunktion som styr om webbsidor kan göra begäranden till en annan domän än den som betjänade dem.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.cors |
allow-credentials |
boolean | ❌ Nej | False |
runtime.host.cors |
origins |
strängmatris | ❌ Nej | None |
Note
Egenskapen allow-credentials anger Access-Control-Allow-Credentials CORS-huvudet.
Format
{
"runtime": {
"host": {
"cors": {
"allow-credentials": <true> | <false> (default),
"origins": ["<array-of-strings>"]
}
}
}
}
Note
Jokertecknet * är giltigt som ett värde för origins.
Provider (Autentiseringsvärdkörning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
provider |
uppräkning (Unauthenticated | StaticWebApps | AppService | EntraId | Custom | Simulator) |
❌ Nej | Unauthenticated |
Väljer autentiseringsmetod. Varje provider validerar identiteten på olika sätt. Stegvis konfiguration finns i instruktionsguiderna i följande tabell.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Providersammanfattning
| Provider | Användningsfall | Identitetskälla | Instruktionsguide |
|---|---|---|---|
Unauthenticated |
DAB sitter bakom en betrodd klientdel (standard) | Ingen – alla begäranden körs som anonymous |
Konfigurera den oautentiserade providern |
AppService |
Azure-värdbaserade appar (EasyAuth) |
X-MS-CLIENT-PRINCIPAL Huvudet |
Konfigurera App Service-autentisering |
EntraID |
Microsoft Entra-ID (Azure AD) | JWT-ägartoken | Konfigurera Entra ID-autentisering |
Custom |
Ip-adresser från tredje part (Okta, Auth0) | JWT-ägartoken | Konfigurera anpassad JWT-autentisering |
Simulator |
Endast lokal testning | Simulerad | Konfigurera simulatorautentisering |
Note
Providern EntraId hette AzureAdtidigare . Det gamla namnet fungerar fortfarande för kompatibilitet.
Oautentiserad (standard)
När Unauthenticated har angetts (eller ingen provider har angetts) inspekterar eller validerar INTE DAB någon JWT. Alla begäranden körs som anonymous rollen . En klientdelstjänst som Azure API Management eller en programgateway kan fortfarande hantera autentiserings- eller åtkomstprinciper innan begäranden når DAB, men DAB fortsätter endast att auktorisera som anonymous.
Important
När Unauthenticated är aktiv authenticated och anpassade roller som definierats i entitetsbehörigheter aktiveras aldrig. Om din konfiguration innehåller dessa roller genererar DAB en varning vid start.
{
"host": {
"authentication": {
"provider": "Unauthenticated"
}
}
}
AppService
Litar på identitetshuvuden som matas in av Azure App Service EasyAuth.
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
EntraID
Validerar JWT-token som utfärdats av Microsoft Entra-ID.
{
"host": {
"authentication": {
"provider": "EntraId",
"jwt": {
"audience": "<application-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
Skräddarsydd
Validerar JWT-token från identitetsprovidrar från tredje part.
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<api-audience>",
"issuer": "https://<your-idp-domain>/"
}
}
}
}
Simulator
Simulerar autentisering för lokal utveckling och testning.
{
"host": {
"authentication": {
"provider": "Simulator"
}
}
}
Important
Providern Simulator fungerar bara när runtime.host.mode är development. DAB startar inte om simulatorn har konfigurerats i produktionsläge.
Val av roll
För alla leverantörer utom Simulator X-MS-API-ROLE väljer rubriken vilken roll som ska användas från den autentiserade användarens anspråk. Om den utelämnas använder begäran systemrollen Authenticated . Mer information om rollutvärdering finns i Översikt över auktorisering.
JWT (autentiseringsvärdkörning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
jwt |
object | ❌ Nej | - |
Global JSON-webbtokenkonfiguration (JWT).
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication.jwt |
audience |
string | ✔️ Ja* | None |
runtime.host.authentication.jwt |
issuer |
string | ✔️ Ja* | None |
* Både audience och issuer krävs när objektet jwt finns. Själva jwt objektet krävs när providern är EntraID, AzureADeller Custom.
Format
{
"runtime": {
"host": {
"authentication": {
"jwt": {
"audience": "<client-id>",
"issuer": "<issuer-url>"
}
}
}
}
}
Sidnumrering (Runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
pagination |
object | ❌ Nej | - |
Globala sidnumreringsgränser för REST- och GraphQL-slutpunkter.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.pagination |
max-page-size |
int | ❌ Nej | 100,000 |
runtime.pagination |
default-page-size |
int | ❌ Nej | 100 |
runtime.pagination |
next-link-relative |
boolean | ❌ Nej | false |
Värden med maximal sidstorlek som stöds
| Value | Result |
|---|---|
integer |
Alla positiva 32-bitars heltal stöds. |
0 |
Stöds inte. |
-1 |
Standardvärdet är det högsta värde som stöds. |
< -1 |
Stöds inte. |
Standardvärden för sidstorlek som stöds
| Value | Result |
|---|---|
integer |
Alla positiva heltal som är mindre än det aktuella max-page-size. |
0 |
Stöds inte. |
-1 |
Standardinställningen för aktuell max-page-size. |
< -1 |
Stöds inte. |
Beteende för next-link-relative
När next-link-relative är trueanvänder sidnumreringsvärden nextLink relativa URL:er i stället för absoluta URL:er.
| Value | Example |
|---|---|
false (standardinställning) |
"nextLink": "https://localhost:5001/api/users?$after=..." |
true |
"nextLink": "/api/users?$after=..." |
Format
{
"runtime": {
"pagination": {
"max-page-size": <integer; default: 100000>,
"default-page-size": <integer; default: 100>,
"next-link-relative": <boolean; default: false>
}
}
}
Note
När värdet är större än max-page-sizebegränsas resultatet till max-page-size.
Exempel: Växling i REST
Request
GET https://localhost:5001/api/users
Svarslast
{
"value": [
{
"Id": 1,
"Name": "Alice",
"Age": 30,
"IsAdmin": true,
"IsMinor": false
},
{
"Id": 2,
"Name": "Bob",
"Age": 17,
"IsAdmin": false,
"IsMinor": true
}
],
"nextLink": "https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}
Begär nästa sida
GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==
Exempel: Växling i GraphQL
Begär nyttolast (fråga)
query {
users {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Svarslast
{
"data": {
"users": {
"items": [
{
"Id": 1,
"Name": "Alice",
"Age": 30,
"IsAdmin": true,
"IsMinor": false
},
{
"Id": 2,
"Name": "Bob",
"Age": 17,
"IsAdmin": false,
"IsMinor": true
}
],
"hasNextPage": true,
"endCursor": "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}
}
}
Begär nästa sida
query {
users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Exempel: Åtkomst i max-page-size begäranden
max-page-size Använd värdet genom att ange $limit (REST) eller first (GraphQL) till -1.
REST
GET https://localhost:5001/api/users?$limit=-1
GraphQL
query {
users(first: -1) {
items {
...
}
}
}
Komprimering (körning)
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
compression |
object | ❌ Nej | - |
Http-svarskomprimeringskonfiguration. När det är aktiverat komprimerar DAB svarskroppar för att minska nyttolaststorlekarna och förbättra överföringshastigheterna.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.compression |
level |
string | ❌ Nej | "optimal" |
Värden som stöds för level
| Value | Description | Komprimeringsbesparingar | Prestandapåverkan |
|---|---|---|---|
optimal |
Balanserar förhållande och hastighet (standard) | Gzip: 90,5% / Brotli: 92,2% | Måttlig CPU-användning, liten fördröjningsökning |
fastest |
Prioriterar hastighet över förhållande | Gzip: 89,8% / Brotli: 91,1% | Låg CPU-användning, minimal svarstid |
none |
Ingen komprimering | 0% (baslinje: 12 673 byte) | None |
HTTP-klienthuvuden
Komprimering anropas av klientens Accept-Encoding huvud. Algoritmer som stöds är Gzip och Brotli. Inställningen level konfigurerar komprimeringsstrategin när både klienten och servern stöder flera algoritmer.
Rubriker som stöds
| HTTP-huvud | Algoritm som används |
|---|---|
Accept-Encoding: gzip |
Gzip |
Accept-Encoding: br |
Brotli |
Format
{
"runtime": {
"compression": {
"level": <"optimal"> (default) | <"fastest"> | <"none">
}
}
}
Example
{
"runtime": {
"compression": {
"level": "optimal"
}
}
}
Cache (körning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
cache |
object | ❌ Nej | - |
Global cachekonfiguration.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache |
enabled |
boolean | ❌ Nej | False |
runtime.cache |
ttl-seconds |
integer | ❌ Nej | 5 |
runtime.cache |
level-2 |
object | ❌ Nej | - |
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache.level-2 |
enabled |
boolean | ❌ Nej | False |
runtime.cache.level-2 |
provider |
string | ❌ Nej | redis |
runtime.cache.level-2 |
connection-string |
string | ❌ Nej | None |
runtime.cache.level-2 |
partition |
string | ❌ Nej | None |
Tip
Egenskapen på entitetsnivå cache.ttl-seconds är standardvärdet för det här globala värdet.
Tip
För installation från slutpunkt till slutpunkt, beteende på cachenivå och Redis-exempel, se Implementera cache på nivå 2.
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>,
"level-2": {
"enabled": <boolean>,
"provider": "redis",
"connection-string": <string>,
"partition": <string>
}
}
}
}
Important
Om global enabled är falsespelar den enskilda entitetsnivån enabled ingen roll.
När level-2.enabled är trueanvänder DAB den konfigurerade distribuerade cacheprovidern utöver det lokala minnesinterna cacheminnet. En entitet som konfigurerats med cachenivå L1L2 kontrollerar först den lokala cachen och sedan distribuerad cache innan den går till databasen.
Telemetri (körning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
telemetry |
object | ❌ Nej | - |
Global telemetrikonfiguration.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
log-level |
dictionary | ❌ Nej | None |
runtime.telemetry |
application-insights |
object | ❌ Nej | - |
runtime.telemetry |
open-telemetry |
object | ❌ Nej | - |
runtime.telemetry |
azure-log-analytics |
object | ❌ Nej | - |
runtime.telemetry |
file |
object | ❌ Nej | - |
Konfigurerar loggning av verbositet per namnområde. Den här konfigurationen följer standardkonventionerna för .NET-loggning och tillåter detaljerad kontroll, även om den förutsätter viss förtrogenhet med interna data-API-byggare. Data-API-byggare är öppen källkod: https://aka.ms/dab
Format
{
"runtime": {
"telemetry": {
"log-level": {
"namespace": "log-level",
"namespace": "log-level"
}
}
}
}
Tip
log-level kan laddas om i både utveckling och produktion. Det är för närvarande den enda egenskapen som stöder snabb inläsning i produktion.
Example
{
"runtime": {
"telemetry": {
"log-level": {
"Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
"Azure.DataApiBuilder.Core": "information",
"default": "warning"
}
}
}
}
Application Insights (telemetri)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
application-insights |
object | ❌ Nej | - |
Konfigurerar loggning till Application Insights.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.application-insights |
enabled |
boolean | ❌ Nej | true |
runtime.telemetry.application-insights |
connection-string |
string | ✔️ Ja | None |
Format
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": <true; default: true> | <false>
"connection-string": <string>
}
}
}
}
OpenTelemetry (telemetri)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
open-telemetry |
object | ❌ Nej | - |
Konfigurerar loggning till Öppna telemetri.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.open-telemetry |
enabled |
boolean | ❌ Nej | true |
runtime.telemetry.open-telemetry |
endpoint |
string | ✔️ Ja | None |
runtime.telemetry.open-telemetry |
headers |
string | ❌ Nej | None |
runtime.telemetry.open-telemetry |
service-name |
string | ❌ Nej | "dab" |
runtime.telemetry.open-telemetry |
exporter-protocol |
uppräkning (grpc | httpprotobuf) |
❌ Nej | grpc |
Flera rubriker är , avgränsade (kommatecken).
Format
{
"runtime": {
"telemetry": {
"open-telemetry": {
"enabled": <true> (default) | <false>,
"endpoint": <string>,
"headers": <string>,
"service-name": <string> (default: "dab"),
"exporter-protocol": <"grpc" (default) | "httpprotobuf">
}
}
}
}
Example
{
"runtime": {
"telemetry": {
"open-telemetry": {
"enabled": true,
// a gRPC endpoint example
"endpoint": "http://localhost:4317",
// an HTTP/protobuf endpoint example
"endpoint": "http://localhost:4318/v1/metrics",
"headers": "api-key=key,other-config-value=value",
"service-name": "dab",
}
}
}
}
Läs mer om OTEL_EXPORTER_OTLP_HEADERS.
Note
gRPC (4317) är snabbare och stöder strömning, men kräver fler konfigurationssteg. HTTP/protobuf (4318) är enklare och enklare att felsöka men mindre effektivt.
Azure Log Analytics (telemetri)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
azure-log-analytics |
object | ❌ Nej | - |
Konfigurerar loggning till Azure Log Analytics via en datainsamlingsslutpunkt. När det är aktiverat skickar DAB telemetridata i batchar med ett konfigurerbart intervall.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics |
enabled |
boolean | ❌ Nej | false |
runtime.telemetry.azure-log-analytics |
dab-identifier |
string | ❌ Nej | "DabLogs" |
runtime.telemetry.azure-log-analytics |
flush-interval-seconds |
integer | ❌ Nej | 5 |
runtime.telemetry.azure-log-analytics |
auth |
object | ✔️ Ja* | - |
*
auth krävs när enabled är true.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics.auth |
custom-table-name |
string | ✔️ Ja* | null |
runtime.telemetry.azure-log-analytics.auth |
dcr-immutable-id |
string | ✔️ Ja* | null |
runtime.telemetry.azure-log-analytics.auth |
dce-endpoint |
string | ✔️ Ja* | null |
* Krävs när enabled är true.
-
dab-identifier– en etikett som skickas till Log Analytics för att skilja vilka loggar som kommer från Data API Builder. -
flush-interval-seconds– tidsintervallet (i sekunder) mellan att skicka batchar med telemetridata. -
custom-table-name– namnet på den anpassade tabellen i Azure Log Analytics där data lagras. -
dcr-immutable-id– det oföränderliga ID:t för datainsamlingsregeln som definierar hur data samlas in. -
dce-endpoint– den datainsamlingsslutpunkts-URL som används för att skicka telemetridata.
Format
{
"runtime": {
"telemetry": {
"azure-log-analytics": {
"enabled": <true> | <false> (default),
"dab-identifier": <string> (default: "DabLogs"),
"flush-interval-seconds": <integer> (default: 5),
"auth": {
"custom-table-name": "<string>",
"dcr-immutable-id": "<string>",
"dce-endpoint": "<string>"
}
}
}
}
}
Example
{
"runtime": {
"telemetry": {
"azure-log-analytics": {
"enabled": true,
"dab-identifier": "MyDabInstance",
"flush-interval-seconds": 10,
"auth": {
"custom-table-name": "DabTelemetry_CL",
"dcr-immutable-id": "dcr-abc123def456",
"dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
}
}
}
}
}
Fil (telemetri)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
file |
object | ❌ Nej | - |
Konfigurerar skrivning av telemetriloggar till en lokal fil. När det är aktiverat skriver DAB strukturerade loggutdata till den angivna filsökvägen med konfigurerbara rullande intervall och storleksgränser.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.file |
enabled |
boolean | ❌ Nej | false |
runtime.telemetry.file |
path |
string | ✔️ Ja* | "/logs/dab-log.txt" |
runtime.telemetry.file |
rolling-interval |
enum | ❌ Nej | "Day" |
runtime.telemetry.file |
retained-file-count-limit |
integer | ❌ Nej | 1 |
runtime.telemetry.file |
file-size-limit-bytes |
integer | ❌ Nej | 1048576 |
*
path krävs när enabled är true.
Rullande intervallvärden
| Value | Description |
|---|---|
Minute |
Ny loggfil varje minut |
Hour |
Ny loggfil varje timme |
Day |
Ny loggfil varje dag (standard) |
Month |
Ny loggfil varje månad |
Year |
Ny loggfil varje år |
Infinite |
Rulla aldrig till en ny fil |
Format
{
"runtime": {
"telemetry": {
"file": {
"enabled": <true> | <false> (default),
"path": <string> (default: "/logs/dab-log.txt"),
"rolling-interval": <"Day"> (default) | <"Minute"> | <"Hour"> | <"Month"> | <"Year"> | <"Infinite">,
"retained-file-count-limit": <integer> (default: 1),
"file-size-limit-bytes": <integer> (default: 1048576)
}
}
}
}
Example
{
"runtime": {
"telemetry": {
"file": {
"enabled": true,
"path": "/var/log/dab/dab-telemetry.txt",
"rolling-interval": "Hour",
"retained-file-count-limit": 24,
"file-size-limit-bytes": 5242880
}
}
}
}
MCP (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
mcp |
object | ❌ Nej | - |
Konfigurerar MCP-servern (SQL Model Context Protocol), som exponerar databasentiteter som MCP-verktyg för AI-agenter.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.mcp |
enabled |
boolean | ❌ Nej | true |
runtime.mcp |
path |
string | ❌ Nej | "/mcp" |
runtime.mcp |
description |
string | ❌ Nej | null |
runtime.mcp |
dml-tools |
booleskt eller objekt | ❌ Nej | true |
Egenskapen dml-tools accepterar ett booleskt värde för att aktivera eller inaktivera alla verktyg eller ett objekt för att styra enskilda verktyg:
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.mcp.dml-tools |
describe-entities |
boolean | ❌ Nej | true |
runtime.mcp.dml-tools |
create-record |
boolean | ❌ Nej | true |
runtime.mcp.dml-tools |
read-records |
boolean | ❌ Nej | true |
runtime.mcp.dml-tools |
update-record |
boolean | ❌ Nej | true |
runtime.mcp.dml-tools |
delete-record |
boolean | ❌ Nej | true |
runtime.mcp.dml-tools |
execute-entity |
boolean | ❌ Nej | true |
runtime.mcp.dml-tools |
aggregate-records |
booleskt eller objekt | ❌ Nej | true |
Verktyget aggregate-records accepterar ett booleskt objekt eller ett objekt med fler inställningar:
| Parent | Property | Type | Required | Default | Räckvidd |
|---|---|---|---|---|---|
runtime.mcp.dml-tools.aggregate-records |
enabled |
boolean | ❌ Nej | true |
|
runtime.mcp.dml-tools.aggregate-records |
query-timeout |
integer | ❌ Nej | 30 |
1–600 sekunder |
Format
{
"runtime": {
"mcp": {
"enabled": <true> (default) | <false>,
"path": <string> (default: "/mcp"),
"description": <string>,
"dml-tools": {
"describe-entities": <true> | <false>,
"create-record": <true> | <false>,
"read-records": <true> | <false>,
"update-record": <true> | <false>,
"delete-record": <true> | <false>,
"execute-entity": <true> | <false>,
"aggregate-records": {
"enabled": <true> | <false>,
"query-timeout": <integer; default: 30>
}
}
}
}
}
Example
{
"runtime": {
"mcp": {
"enabled": true,
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": true,
"execute-entity": true,
"aggregate-records": {
"enabled": true,
"query-timeout": 30
}
}
}
}
}
Om du vill aktivera eller inaktivera alla DML-verktyg samtidigt anger du "dml-tools" till true eller false.
När du inaktiverar ett verktyg på körningsnivå visas verktyget aldrig i MCP-svaret tools/list och kan inte anropas, oavsett behörigheter på entitetsnivå. Mer information om enskilda DML-verktyg finns i Verktyg för datamanipuleringsspråk (DML).
Använda CLI
dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled true
Hälsa (körning)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
health |
object | ❌ Nej | - |
Konfiguration av slutpunkt för global hälsokontroll (/health).
Kapslade egenskaper
| Parent | Property | Type | Required | Default | Intervall/anteckningar |
|---|---|---|---|---|---|
runtime.health |
enabled |
boolean | ❌ Nej | true |
|
runtime.health |
roles |
strängmatris | ✔️ Ja* | null |
*Krävs i produktionsläge |
runtime.health |
cache-ttl-seconds |
integer | ❌ Nej | 5 |
Min: 0 |
runtime.health |
max-query-parallelism |
integer | ❌ Nej | 4 |
Min: En, Max: Åtta (fastklämd) |
Beteende i utveckling jämfört med produktion
| Condition | Utvecklingsbeteende | Produktionsbeteende |
|---|---|---|
health.enabled = falskt |
403 Status |
403 Status |
health.enabled = sant |
Beror på roll | Beror på roll |
roles utelämnas eller utelämnas null |
Hälsa visas |
403 Status |
aktuell roll som inte finns i roles |
403 Status |
403 Status |
aktuell roll i roles |
Hälsa visas | Hälsa visas |
roles Innehåller anonymous |
Hälsa visas | Hälsa visas |
Format
{
"health": {
"enabled": <true> (default) | <false>,
"roles": [ <string> ], // required in production
"cache-ttl-seconds": <integer; default: 5>,
"max-query-parallelism": <integer; default: 4>
}
}
Note
Om global enabled är falsespelar den enskilda entitetsnivån enabled ingen roll.
Example
{
"health": {
"enabled": true,
"roles": ["admin", "support"],
"cache-ttl-seconds": 10,
"max-query-parallelism": 6
}
}