Dela via


Runtime

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-limit för att begränsa kapslade frågor.
  • Ange allow-introspection till false för att dölja GraphQL-schemat.
  • Använd multiple-mutations fö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 är falsespelar den enskilda entitetsnivån enabled ingen roll.
  • Egenskapen path stöder inte undersökvägsvärden som /api/data.
  • request-body-strict introducerades 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är INSERT deras värde i nyttolasten är null. Därför INSERT kan åtgärder i default() kolumner, när request-body-strict är true, inte resultera i explicita null värden. För att utföra det här beteendet krävs en UPDATE åtgärd.
  • Kolumner med en default() ignoreras inte under UPDATE oavsett 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).

Diagram över stöd för JSON-webbtoken i Data API Builder.

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.

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
  }
}