通过


Runtime

用于确定运行时行为的配置设置。

分页设置

Property Default Description
runtime.pagination.max页大小 定义每页的最大记录数
runtime.pagination.default-page-size 为每个响应设置默认记录

REST 设置

Property Default Description
runtime.rest.path "/api" REST 终结点的基本路径
runtime.rest.enabled true 允许启用或禁用所有实体的 REST 请求
runtime.rest.request-body-strict true 如果为 true,则禁止请求正文中的多余的字段

GraphQL 设置

Property Default Description
runtime.graphql.allow-introspection true 允许查询基础 GraphQL 架构
runtime.graphql.path "/graphql" GraphQL 终结点的基本路径
runtime.graphql.enabled true 允许启用或禁用所有实体的 GraphQL 请求
runtime.graphql.depth-limit null GraphQL 查询允许的最大深度
runtime.graphql.multiple-mutations.create.enabled false 允许对所有实体进行多创建突变

主机设置

Property Default Description
runtime.host.max-response-size-mb 158 单个结果中允许的数据库响应的最大大小(MB)
runtime.host.mode "production" 运行模式; "production""development"

CORS 设置

Property Default Description
runtime.host.cors.origins [] 允许的 CORS 源
runtime.host.cors.allow-credentials false 设置 Access-Control-Allow-Credentials 标头的值

身份验证设置

Property Default Description
runtime.host.authentication.provider Unauthenticated 身份验证提供程序
runtime.host.authentication.jwt.audience null JWT 受众
runtime.host.authentication.jwt.issuer null JWT 颁发者

缓存设置

Property Default Description
runtime.cache.enabled false 全局启用响应缓存
runtime.cache.ttl-seconds 5 全局缓存生存时间(秒)
runtime.cache.level-2.enabled false 全局启用分布式级别 2 缓存
runtime.cache.level-2.provider "redis" 级别 2 缓存的分布式缓存提供程序
runtime.cache.level-2.connection-string null 级别 2 缓存提供程序的连接字符串
runtime.cache.level-2.partition null 用于隔离分布式缓存空间的可选分区名称

压缩设置

Property Default Description
runtime.compression.level optimal HTTP 响应压缩级别(optimalfastestnone

遥测设置

Property Default Description
runtime.telemetry.application-insights.connection-string null Application Insights 连接字符串
runtime.telemetry.application-insights.enabled true 启用或禁用 Application Insights 遥测
runtime.telemetry.open-telemetry.endpoint null OpenTelemetry 收集器 URL
runtime.telemetry.open-telemetry.headers {} OpenTelemetry 导出标头
runtime.telemetry.open-telemetry.service-name "dab" OpenTelemetry 服务名称
runtime.telemetry.open-telemetry.exporter-protocol "grpc" OpenTelemetry 协议(“grpc”或“httpprotobuf”)
runtime.telemetry.open-telemetry.enabled true 启用或禁用 OpenTelemetry
runtime.telemetry.open-telemetry.enabled true 启用或禁用 OpenTelemetry
runtime.telemetry.azure-log-analytics.enabled false 启用或禁用 Azure Log Analytics
runtime.telemetry.azure-log-analytics.dab-identifier "DabLogs" Azure Log Analytics 中 DAB 的标识符
runtime.telemetry.azure-log-analytics.flush-interval-seconds 5 日志批处理推送之间的间隔(秒)
runtime.telemetry.azure-log-analytics.auth.custom-table-name null Azure Log Analytics 的自定义表名称
runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id null 数据收集规则不可变 ID
runtime.telemetry.azure-log-analytics.auth.dce-endpoint null 数据收集终结点 URL
runtime.telemetry.file.enabled false 启用或禁用文件接收器日志记录
runtime.telemetry.file.path "/logs/dab-log.txt" 遥测日志的文件路径
runtime.telemetry.file.rolling-interval "Day" 日志文件滚动间隔
runtime.telemetry.file.retained-file-count-limit 1 保留的日志文件的最大数目
runtime.telemetry.file.file-size-limit-bytes 1048576 滚动之前的最大文件大小(以字节为单位)
runtime.telemetry.log-level.namespace null 特定于命名空间的日志级别重写
runtime.health.enabled true 全局启用或禁用运行状况检查终结点
runtime.health.roles null 综合运行状况终结点的允许角色
runtime.health.cache-ttl-seconds 5 运行状况检查报告缓存条目的生存时间(秒)
runtime.health.max-query-parallelism 4 最大并发运行状况检查查询(范围:1-8)

MCP 设置

Property Default Description
runtime.mcp.enabled true 全局启用或禁用 MCP 终结点
runtime.mcp.path "/mcp" MCP 终结点的基本路径
runtime.mcp.description null 初始化期间发送到 MCP 客户端的服务器说明
runtime.mcp.dml-tools true 启用或禁用所有 DML 工具,或每个工具控件的对象
runtime.mcp.dml-tools.describe-entities true 启用describe_entities工具
runtime.mcp.dml-tools.create-record true 启用create_record工具
runtime.mcp.dml-tools.read-records true 启用read_records工具
runtime.mcp.dml-tools.update-record true 启用update_record工具
runtime.mcp.dml-tools.delete-record true 启用delete_record工具
runtime.mcp.dml-tools.execute-entity true 启用execute_entity工具
runtime.mcp.dml-tools.aggregate-records true 启用aggregate_records工具(具有查询超时的布尔值或对象)

格式概述

{
  "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`)
        }
      }
    }
  }
}

模式(主机运行时)

Parent Property 类型 Required Default
runtime host 枚举 (production | development ❌ 否 production

开发行为

  • 为 GraphQL 测试启用了 Nitro (前香蕉蛋糕流行)
  • 为 REST 测试启用了 Swagger UI
  • 已启用匿名运行状况检查
  • 日志记录详细程度增加 (调试)

Format

{
  "runtime": {
    "host": {
      "mode": "production" (default) | "development"
    }
  }
}

最大响应大小(主机运行时)

Parent Property 类型 Required Default
runtime.host max-response-size-mb 整数 ❌ 否 158

设置任何给定结果的最大大小(以兆字节为单位)。 由于大型响应可能会给系统造成压力, max-response-size-mb 因此会限制总大小(不同于行计数),以防止重载,这尤其适用于文本或 JSON 等大型列。

Value Result
未设置 使用默认值
null 使用默认值
integer 任何正 32 位整数
<= 0 不支持

Format

{
  "runtime": {
    "host": {
      "max-response-size-mb": <integer; default: 158>
    }
  }
}

GraphQL (运行时)

Parent Property 类型 Required Default
runtime graphql 对象 ❌ 否 -

Global GraphQL 配置。

嵌套属性

Parent Property 类型 Required Default
runtime.graphql enabled boolean ❌ 否 None
runtime.graphql path 字符串 ❌ 否 "/graphql"
runtime.graphql depth-limit 整数 ❌ 否 无(无限制)
runtime.graphql allow-introspection boolean ❌ 否 True
runtime.graphql multiple-mutations.create.enabled boolean ❌ 否 False

属性说明

  • 属性不允许 path 子路径。
  • 用于 depth-limit 约束嵌套查询。
  • allow-introspection设置为false隐藏 GraphQL 架构。
  • 用于 multiple-mutations 在单个突变中插入多个实体。

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

示例:多个突变

Configuration

{
  "runtime": {
    "graphql": {
      "multiple-mutations": {
        "create": {
          "enabled": true
        }
      }
    }
  },
  "entities": {
    "User": {
      "source": "dbo.Users",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["create"] // entity permissions are required
        }
      ]
    }
  }
}

GraphQL 突变

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 (运行时)

Parent Property 类型 Required Default
runtime rest 对象 ❌ 否 -

全局 REST 配置。

嵌套属性

Parent Property 类型 Required Default
runtime.rest enabled boolean ❌ 否 None
runtime.rest path 字符串 ❌ 否 "/api"
runtime.rest request-body-strict boolean ❌ 否 True

属性说明

  • 如果全局 enabledfalse则各个实体级别 enabled 无关紧要。
  • path 属性不支持子路径值,如 /api/data.
  • request-body-strict 引入了帮助简化 .NET POCO 对象。
request-body-strict Behavior
true 请求正文中的额外字段会导致 BadRequest 异常。
false 请求正文中的额外字段将被忽略。

Format

{
  "runtime": {
    "rest": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: /api),
      "request-body-strict": <true> (default) | <false>
    }
  }
}

示例:request-body-strict

  • 仅当有效负载中的列的值为 /> 时,才会忽略具有值的列。 因此,INSERTdefault()列的作(如果为request-body-stricttrue不能导致显式null值。 若要完成此行为,需要一个 UPDATE 作。
  • 无论有效负载值如何,都不忽略default()具有 a UPDATE 的列。
  • 始终忽略计算列。
  • 自动生成的列始终被忽略。

示例表

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

请求有效负载

{
  "Id": 999,
  "Name": "Alice",
  "Age": null,
  "IsAdmin": null,
  "IsMinor": false,
  "ExtraField": "ignored"
}

插入行为 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.

响应有效负载

{
  "Id": 1,          // Auto-generated by the database
  "Name": "Alice",
  "Age": 18,        // Default applied
  "IsAdmin": false, // Default applied
  "IsMinor": true   // Computed
}

更新行为 request-body-strict = false

UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.

响应有效负载

{
  "Id": 1,
  "Name": "Alice Updated",
  "Age": null,
  "IsAdmin": false,
  "IsMinor": false // Recomputed by the database (false when age is `null`)
}

CORS (主机运行时)

Parent Property 类型 Required Default
runtime.host cors 对象 ❌ 否 -

全局 CORS 配置。

Tip

CORS 代表“跨域资源共享”。它是一项浏览器安全功能,用于控制网页是否可以向服务域以外的域发出请求。

嵌套属性

Parent Property 类型 Required Default
runtime.host.cors allow-credentials boolean ❌ 否 False
runtime.host.cors origins 字符串数组 ❌ 否 None

Note

allow-credentials 属性设置 Access-Control-Allow-Credentials CORS 标头。

Format

{
  "runtime": {
    "host": {
      "cors": {
        "allow-credentials": <true> | <false> (default),
        "origins": ["<array-of-strings>"]
      }
    }
  }
}

Note

通配符 * 作为值 origins有效。

提供程序(身份验证主机运行时)

Parent Property 类型 Required Default
runtime.host.authentication provider 枚举 (Unauthenticated | StaticWebApps | AppService | EntraId | Custom | Simulator ❌ 否 Unauthenticated

选择身份验证方法。 每个提供程序以不同的方式验证标识。 有关分步设置,请参阅下表中的操作指南。

Note

本节中描述的数据 API 生成器 2.0 功能目前处于预览状态,在正式发布之前可能会更改。 有关详细信息,请参阅 版本 2.0 中的新增功能。

提供程序摘要

Provider 用例 标识源 操作指南
Unauthenticated DAB 位于受信任的前端后面(默认值) 无 — 所有请求都以 anonymous 配置未经身份验证的提供程序
AppService Azure 托管的应用 (EasyAuth) X-MS-CLIENT-PRINCIPAL 标头 配置应用服务身份验证
EntraID Microsoft Entra ID (Azure AD) JWT 持有者令牌 配置 Entra ID 身份验证
Custom 第三方 IdP (Okta, Auth0) JWT 持有者令牌 配置自定义 JWT 身份验证
Simulator 仅本地测试 模拟 配置模拟器身份验证

Note

提供程序 EntraId 之前已命名 AzureAd。 旧名称仍适用于兼容性。

未经身份验证(默认值)

设置(或未指定提供程序)时 Unauthenticated ,DAB 不会检查或验证任何 JWT。 所有请求都作为 anonymous 角色运行。 在请求到达 DAB 之前,前端服务(如 Azure API 管理或应用程序网关)仍可以处理身份验证或访问策略,但 DAB 仍会继续授权。anonymous

Important

何时 Unauthenticated 处于活动状态, authenticated 并且永远不会激活实体权限中定义的自定义角色。 如果配置包含这些角色,DAB 会在启动时发出警告。

{
  "host": {
    "authentication": {
      "provider": "Unauthenticated"
    }
  }
}

应用服务

信任 Azure 应用服务 EasyAuth 注入的标识标头。

{
  "host": {
    "authentication": {
      "provider": "AppService"
    }
  }
}

EntraID

验证由 Microsoft Entra ID 颁发的 JWT 令牌。

{
  "host": {
    "authentication": {
      "provider": "EntraId",
      "jwt": {
        "audience": "<application-id>",
        "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
      }
    }
  }
}

Custom

验证来自第三方标识提供者的 JWT 令牌。

{
  "host": {
    "authentication": {
      "provider": "Custom",
      "jwt": {
        "audience": "<api-audience>",
        "issuer": "https://<your-idp-domain>/"
      }
    }
  }
}

模拟器

模拟本地开发和测试的身份验证。

{
  "host": {
    "authentication": {
      "provider": "Simulator"
    }
  }
}

Important

提供程序Simulator仅在是runtime.host.modedevelopment有效。 如果在生产模式下配置了模拟器,DAB 将无法启动。

角色选择

对于除模拟器之外的所有提供程序, X-MS-API-ROLE 标头将从经过身份验证的用户声明中选择要使用的角色。 如果省略,则请求使用 Authenticated 系统角色。 有关角色评估的详细信息,请参阅 授权概述

JWT (身份验证主机运行时)

Parent Property 类型 Required Default
runtime.host.authentication jwt 对象 ❌ 否 -

全局 JSON Web 令牌 (JWT) 配置。

数据 API 生成器中 JSON Web 令牌支持的示意图。

嵌套属性

Parent Property 类型 Required Default
runtime.host.authentication.jwt audience 字符串 ✔️ 是的* None
runtime.host.authentication.jwt issuer 字符串 ✔️ 是的* None

* 当对象存在时audience,这两者均issuerjwt是必需的。 提供程序 或 < / / gt; 时,需要对象本身。

Format

{
  "runtime": {
    "host": {
      "authentication": {
        "jwt": {
          "audience": "<client-id>",
          "issuer": "<issuer-url>"
        }
      }
    }
  }
}

分页 (运行时)

Parent Property 类型 Required Default
runtime pagination 对象 ❌ 否 -

REST 和 GraphQL 终结点的全局分页限制。

嵌套属性

Parent Property 类型 Required Default
runtime.pagination max-page-size int ❌ 否 100,000
runtime.pagination default-page-size int ❌ 否 100
runtime.pagination next-link-relative boolean ❌ 否 false

支持的最大页大小值

Value Result
integer 支持任何正 32 位整数。
0 不支持。
-1 默认为支持的最大值。
< -1 不支持。

默认页面大小支持的值

Value Result
integer 任何小于当前 max-page-size的正整数。
0 不支持。
-1 默认为当前 max-page-size 设置。
< -1 不支持。

如果为next-link-relativetrue分页nextLink值使用相对 URL 而不是绝对 URL。

Value Example
false(默认值) "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

当值大于 max-page-size时,结果将限制在以下位置 max-page-size

示例:REST 中的分页

Request

GET https://localhost:5001/api/users

响应有效负载

{
  "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=="
}

请求下一页

GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==

示例:GraphQL 中的分页

请求有效负载 (查询)

query {
  users {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

响应有效负载

{
  "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=="
    }
  }
}

请求下一页

query {
  users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

示例:在 max-page-size 请求中访问

通过将max-page-size值(REST)或 $limit (GraphQL) 设置为 first-1

REST

GET https://localhost:5001/api/users?$limit=-1

GraphQL

query {
  users(first: -1) {
    items {
      ...
    }
  }
}

压缩 (运行时)

Note

本节中描述的数据 API 生成器 2.0 功能目前处于预览状态,在正式发布之前可能会更改。 有关详细信息,请参阅 版本 2.0 中的新增功能。

Parent Property 类型 Required Default
runtime compression 对象 ❌ 否 -

HTTP 响应压缩配置。 启用后,DAB 会压缩响应正文以减少有效负载大小并提高传输速度。

嵌套属性

Parent Property 类型 Required Default
runtime.compression level 字符串 ❌ 否 "optimal"

支持的 值 level

Value Description 压缩节省 性能影响
optimal 平衡比率和速度(默认值) Gzip: 90.5% / Brotli: 92.2% 中等 CPU 使用率,轻微延迟增加
fastest 确定速度超过比率的优先级 Gzip: 89.8% / 布罗特利: 91.1% CPU 使用率低,延迟最小
none 无压缩 0% (基线:12,673 字节) None

客户端 HTTP 标头

由客户端标头 Accept-Encoding 调用压缩。 支持的算法是 Gzip 和 Brotli。 当客户端和服务器都支持多个算法时,该 level 设置将配置压缩策略。

支持的标头

HTTP 标头 使用的算法
Accept-Encoding: gzip Gzip
Accept-Encoding: br Brotli

Format

{
  "runtime": {
    "compression": {
      "level": <"optimal"> (default) | <"fastest"> | <"none">
    }
  }
}

Example

{
  "runtime": {
    "compression": {
      "level": "optimal"
    }
  }
}

缓存(运行时)

Parent Property 类型 Required Default
runtime cache 对象 ❌ 否 -

全局缓存配置。

嵌套属性

Parent Property 类型 Required Default
runtime.cache enabled boolean ❌ 否 False
runtime.cache ttl-seconds 整数 ❌ 否 5
runtime.cache level-2 对象 ❌ 否 -
Parent Property 类型 Required Default
runtime.cache.level-2 enabled boolean ❌ 否 False
runtime.cache.level-2 provider 字符串 ❌ 否 redis
runtime.cache.level-2 connection-string 字符串 ❌ 否 None
runtime.cache.level-2 partition 字符串 ❌ 否 None

Tip

实体级 cache.ttl-seconds 属性默认为此全局值。

Tip

有关端到端设置、缓存级别行为和 Redis 示例,请参阅 “实现级别 2 缓存”。

Format

{
  "runtime": {
    "cache":  {
      "enabled": <boolean>,
      "ttl-seconds": <integer>,
      "level-2": {
        "enabled": <boolean>,
        "provider": "redis",
        "connection-string": <string>,
        "partition": <string>
      }
    }
  }
}

Important

如果全局 enabledfalse则各个实体级别 enabled 无关紧要。

level-2.enabled届时true,DAB 除了本地内存中缓存之外,还使用配置的分布式缓存提供程序。 配置有缓存级别的 L1L2 实体先检查本地缓存,然后是分布式缓存,然后再转到数据库。

遥测(运行时)

Parent Property 类型 Required Default
runtime telemetry 对象 ❌ 否 -

全局遥测配置。

嵌套属性

Parent Property 类型 Required Default
runtime.telemetry log-level 字典 ❌ 否 None
runtime.telemetry application-insights 对象 ❌ 否 -
runtime.telemetry open-telemetry 对象 ❌ 否 -
runtime.telemetry azure-log-analytics 对象 ❌ 否 -
runtime.telemetry file 对象 ❌ 否 -

为每个命名空间配置日志记录详细程度。 此配置遵循标准 .NET 日志记录约定并允许精细控制,尽管它假定对数据 API 生成器内部有一些熟悉。 数据 API 生成器是开源的: https://aka.ms/dab

Format

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "namespace": "log-level",
        "namespace": "log-level"
      }
    }
  }
}

Tip

log-level 可以在开发和生产中热重载。 它目前是唯一支持生产中热重载的属性。

Example

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
        "Azure.DataApiBuilder.Core": "information",
        "default": "warning"
      }
    }
  }
}

Application Insights (遥测)

Parent Property 类型 Required Default
runtime.telemetry application-insights 对象 ❌ 否 -

配置 Application Insights 的日志记录。

嵌套属性

Parent Property 类型 Required Default
runtime.telemetry.application-insights enabled boolean ❌ 否 true
runtime.telemetry.application-insights connection-string 字符串 ✔️ 是的 None

Format

{
  "runtime": {
    "telemetry": {
      "application-insights": {
        "enabled": <true; default: true> | <false>
        "connection-string": <string>
      }
    }
  }
}

OpenTelemetry (遥测)

Parent Property 类型 Required Default
runtime.telemetry open-telemetry 对象 ❌ 否 -

配置日志记录以打开遥测。

嵌套属性

Parent Property 类型 Required Default
runtime.telemetry.open-telemetry enabled boolean ❌ 否 true
runtime.telemetry.open-telemetry endpoint 字符串 ✔️ 是的 None
runtime.telemetry.open-telemetry headers 字符串 ❌ 否 None
runtime.telemetry.open-telemetry service-name 字符串 ❌ 否 “dab”
runtime.telemetry.open-telemetry exporter-protocol 枚举 (grpc | httpprotobuf ❌ 否 grpc

多个标头( , 逗号)分隔。

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

详细了解 OTEL_EXPORTER_OTLP_HEADERS

Note

gRPC (4317) 速度更快,支持流式处理,但需要执行更多设置步骤。 HTTP/protobuf (4318) 更易于调试,但效率较低。

Azure Log Analytics (遥测)

Parent Property 类型 Required Default
runtime.telemetry azure-log-analytics 对象 ❌ 否 -

通过数据收集终结点配置到 Azure Log Analytics 的日志记录。 启用后,DAB 以可配置的间隔批量发送遥测数据。

Note

本节中描述的数据 API 生成器 2.0 功能目前处于预览状态,在正式发布之前可能会更改。 有关详细信息,请参阅 版本 2.0 中的新增功能。

嵌套属性

Parent Property 类型 Required Default
runtime.telemetry.azure-log-analytics enabled boolean ❌ 否 false
runtime.telemetry.azure-log-analytics dab-identifier 字符串 ❌ 否 "DabLogs"
runtime.telemetry.azure-log-analytics flush-interval-seconds 整数 ❌ 否 5
runtime.telemetry.azure-log-analytics auth 对象 ✔️ 是的* -

* auth 是当 enabledtrue.

Parent Property 类型 Required Default
runtime.telemetry.azure-log-analytics.auth custom-table-name 字符串 ✔️ 是的* null
runtime.telemetry.azure-log-analytics.auth dcr-immutable-id 字符串 ✔️ 是的* null
runtime.telemetry.azure-log-analytics.auth dce-endpoint 字符串 ✔️ 是的* null

* 当 enabledtrue.

  • dab-identifier- 传递给 Log Analytics 的标签有助于区分来自数据 API 生成器的日志。
  • flush-interval-seconds- 发送批遥测数据之间的时间间隔(以秒为单位)。
  • custom-table-name- 存储数据的 Azure Log Analytics 中的自定义表的名称。
  • dcr-immutable-id- 定义数据收集方式的数据收集规则的不可变 ID。
  • dce-endpoint- 用于发送遥测数据的数据收集终结点 URL。

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

文件(遥测)

Parent Property 类型 Required Default
runtime.telemetry file 对象 ❌ 否 -

配置将遥测日志写入本地文件。 启用后,DAB 会使用可配置的滚动间隔和大小限制将结构化日志输出写入指定的文件路径。

Note

本节中描述的数据 API 生成器 2.0 功能目前处于预览状态,在正式发布之前可能会更改。 有关详细信息,请参阅 版本 2.0 中的新增功能。

嵌套属性

Parent Property 类型 Required Default
runtime.telemetry.file enabled boolean ❌ 否 false
runtime.telemetry.file path 字符串 ✔️ 是的* "/logs/dab-log.txt"
runtime.telemetry.file rolling-interval 枚举 ❌ 否 "Day"
runtime.telemetry.file retained-file-count-limit 整数 ❌ 否 1
runtime.telemetry.file file-size-limit-bytes 整数 ❌ 否 1048576

* path 是当 enabledtrue.

滚动间隔值

Value Description
Minute 每分钟新建日志文件一次
Hour 每小时新建日志文件
Day 每天新建日志文件(默认值)
Month 每月新建日志文件
Year 每年新建日志文件
Infinite 从不滚动到新文件

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 (运行时)

Parent Property 类型 Required Default
runtime mcp 对象 ❌ 否 -

配置 SQL 模型上下文协议 (MCP) 服务器,该服务器将数据库实体公开为 AI 代理的 MCP 工具。

Note

本节中描述的数据 API 生成器 2.0 功能目前处于预览状态,在正式发布之前可能会更改。 有关详细信息,请参阅 版本 2.0 中的新增功能。

嵌套属性

Parent Property 类型 Required Default
runtime.mcp enabled boolean ❌ 否 true
runtime.mcp path 字符串 ❌ 否 "/mcp"
runtime.mcp description 字符串 ❌ 否 null
runtime.mcp dml-tools 布尔值或对象 ❌ 否 true

dml-tools 属性接受一个布尔值来启用或禁用所有工具,或用于控制单个工具的对象:

Parent Property 类型 Required Default
runtime.mcp.dml-tools describe-entities boolean ❌ 否 true
runtime.mcp.dml-tools create-record boolean ❌ 否 true
runtime.mcp.dml-tools read-records boolean ❌ 否 true
runtime.mcp.dml-tools update-record boolean ❌ 否 true
runtime.mcp.dml-tools delete-record boolean ❌ 否 true
runtime.mcp.dml-tools execute-entity boolean ❌ 否 true
runtime.mcp.dml-tools aggregate-records 布尔值或对象 ❌ 否 true

该工具 aggregate-records 接受具有更多设置的布尔值或对象:

Parent Property 类型 Required Default 范围
runtime.mcp.dml-tools.aggregate-records enabled boolean ❌ 否 true
runtime.mcp.dml-tools.aggregate-records query-timeout 整数 ❌ 否 30 1–600 秒

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

若要一次性启用或禁用所有 DML 工具,请设置为"dml-tools"truefalse

在运行时级别禁用工具时,无论实体级别权限如何,该工具都不会出现在 MCP tools/list 响应中,也不能调用该工具。 有关单个 DML 工具的详细信息,请参阅 数据操作语言 (DML) 工具

使用命令行界面 (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

运行状况(运行时)

Parent Property 类型 Required Default
runtime health 对象 ❌ 否 -

全局 运行状况检查终结点/health) 配置。

嵌套属性

Parent Property 类型 Required Default 范围/备注
runtime.health enabled boolean ❌ 否 true
runtime.health roles 字符串数组 ✔️ 是的* null *在生产模式下是必需的
runtime.health cache-ttl-seconds 整数 ❌ 否 5 最小值:0
runtime.health max-query-parallelism 整数 ❌ 否 4 最小值:一,最大值:八(夹)

开发中的行为与生产行为

Condition 开发行为 生产行为
health.enabled = 假 403 地位 403 地位
health.enabled = 真 取决于角色 取决于角色
roles 省略或 null 显示的运行状况 403 地位
当前角色不在 roles 403 地位 403 地位
当前角色 roles 显示的运行状况 显示的运行状况
roles 包括 anonymous 显示的运行状况 显示的运行状况

Format

{
  "health": {
    "enabled": <true> (default) | <false>,
    "roles": [ <string> ], // required in production
    "cache-ttl-seconds": <integer; default: 5>,
    "max-query-parallelism": <integer; default: 4>
  }
}

Note

如果全局 enabledfalse则各个实体级别 enabled 无关紧要。

Example

{
  "health": {
    "enabled": true,
    "roles": ["admin", "support"],
    "cache-ttl-seconds": 10,
    "max-query-parallelism": 6
  }
}