Skip to content

dab validate

在不启动运行时的情况下验证数据墙DBW 配置文件。依次执行五个阶段的检查:Schema、配置属性、权限、数据库连接和实体元数据。以退出码表示结果——非常适合接入 CI/CD 流水线。

语法

bash
dab validate [options]

选项

选项说明默认值
-c, --config配置文件路径优先 dab-config.<DAB_ENVIRONMENT>.json,否则 dab-config.json

NOTE

validate 仅接受 --config 选项,无其他标志。

退出码

退出码含义
0配置通过所有阶段验证
非零一个或多个阶段失败——查看日志了解详情

验证阶段

验证按顺序执行。如果某一阶段失败,后续阶段将被跳过。应修复第一个失败再重新运行。

阶段 1:Schema 验证

检查配置 JSON 是否符合架构定义。

检查规则:

规则说明
$schema 可访问或结构有效架构 URL 可获取且格式正确
顶层节结构正确data-sourceruntimeentities 存在且为正确格式
无额外属性不包含架构不允许的字段
枚举值合法database-type 等字段为允许的值

常见错误:

错误修复
属性名拼写错误(如 "conn-string"改为正确拼写("connection-string"
枚举值非法(如 "database-type": "mydb"改为支持的取值(mssqlpostgresqlmysql
entities 写成数组改为以实体名作为键的对象

阶段 2:配置属性验证

检查超出 Schema 的配置一致性。

检查规则:

  • database-type 必须为有效值。
  • 至少启用一个终结点(REST、GraphQL 或 MCP)。
  • REST / GraphQL 路径必须以 / 开头且不冲突。
  • 启用 JWT 认证时必须同时设置 issueraudience
  • 已弃用的 *.disabled 标志会产生警告但不导致失败。

常见错误:

错误修复
所有终结点都关闭至少重新启用一个
设置了 issuer 但没有 audience两者都提供或都不提供

阶段 3:权限验证

检查每个实体的权限配置。

检查规则:

  • 每条权限必须有非空角色名。
  • 动作必须合法:表/视图 — createreadupdatedelete*;存储过程 — execute*
  • 不允许空动作列表。
  • 单个动作集合不能混用 * 和显式动作。

常见错误:

错误修复
不支持的动作(如 "drop"改为 read 等支持的动作
存储过程配置了 CRUD 动作改为 execute*
空动作列表 "actions": []提供至少一个动作

阶段 4:数据库连接验证

检查数据库连接是否可用。

检查规则:

  • 连接字符串是否可解析。
  • 凭据是否有效。
  • 数据库是否存在。

常见错误:

错误修复
连接超时检查网络和防火墙
登录失败修正用户名和密码
数据库不存在创建数据库或更新配置

阶段 5:实体元数据验证

检查实体定义与数据库实际对象是否匹配。

检查规则:

  • 数据源对象(表、视图、存储过程)是否存在。
  • 表/视图的主键字段是否合法,include/exclude 字段是否存在。
  • 视图必须有 source.key-fieldsfields[].primary-key
  • 存储过程参数是否与签名匹配。
  • 关系目标实体是否存在,关联字段数量是否与主键一致。
  • 多对多关系 linking.object 是否存在。
  • 策略引用的字段是否有效。
  • 缓存 TTL 是否为非负整数。

常见错误:

错误修复
视图缺少主键添加 source.key-fieldsfields[].primary-key
字段名错误修正或删除 fields.include / fields.exclude 中的字段名
关系字段数不匹配修正 linking 字段数量

示例

基本用法

bash
dab validate

指定配置文件

bash
dab validate --config ./configs/dab-config.prod.json

环境专用验证

bash
DAB_ENVIRONMENT=Staging dab validate

多环境批量验证

bash
for env in Development Staging Production; do
  echo "Validating $env..."
  DAB_ENVIRONMENT=$env dab validate || exit 1
done

CI 流水线

bash
dab validate && echo "Config is valid" || { echo "Config is invalid"; exit 1; }

输出示例

成功:

text
Microsoft.DataApiBuilder 1.7.0
Config is valid.

失败:

text
Microsoft.DataApiBuilder 1.7.0
Error: View 'BookDetail' missing required key-fields.
Config is invalid.

NOTE

验证错误具有阶段性。先修复第一个失败阶段,再重新运行直到退出码为 0

下一步

数据墙DBW 产品文档与开发指南。