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-source、runtime、entities 存在且为正确格式 |
| 无额外属性 | 不包含架构不允许的字段 |
| 枚举值合法 | database-type 等字段为允许的值 |
常见错误:
| 错误 | 修复 |
|---|---|
属性名拼写错误(如 "conn-string") | 改为正确拼写("connection-string") |
枚举值非法(如 "database-type": "mydb") | 改为支持的取值(mssql、postgresql、mysql) |
entities 写成数组 | 改为以实体名作为键的对象 |
阶段 2:配置属性验证
检查超出 Schema 的配置一致性。
检查规则:
database-type必须为有效值。- 至少启用一个终结点(REST、GraphQL 或 MCP)。
- REST / GraphQL 路径必须以
/开头且不冲突。 - 启用 JWT 认证时必须同时设置
issuer和audience。 - 已弃用的
*.disabled标志会产生警告但不导致失败。
常见错误:
| 错误 | 修复 |
|---|---|
| 所有终结点都关闭 | 至少重新启用一个 |
| 设置了 issuer 但没有 audience | 两者都提供或都不提供 |
阶段 3:权限验证
检查每个实体的权限配置。
检查规则:
- 每条权限必须有非空角色名。
- 动作必须合法:表/视图 —
create、read、update、delete、*;存储过程 —execute、*。 - 不允许空动作列表。
- 单个动作集合不能混用
*和显式动作。
常见错误:
| 错误 | 修复 |
|---|---|
不支持的动作(如 "drop") | 改为 read 等支持的动作 |
| 存储过程配置了 CRUD 动作 | 改为 execute 或 * |
空动作列表 "actions": [] | 提供至少一个动作 |
阶段 4:数据库连接验证
检查数据库连接是否可用。
检查规则:
- 连接字符串是否可解析。
- 凭据是否有效。
- 数据库是否存在。
常见错误:
| 错误 | 修复 |
|---|---|
| 连接超时 | 检查网络和防火墙 |
| 登录失败 | 修正用户名和密码 |
| 数据库不存在 | 创建数据库或更新配置 |
阶段 5:实体元数据验证
检查实体定义与数据库实际对象是否匹配。
检查规则:
- 数据源对象(表、视图、存储过程)是否存在。
- 表/视图的主键字段是否合法,include/exclude 字段是否存在。
- 视图必须有
source.key-fields或fields[].primary-key。 - 存储过程参数是否与签名匹配。
- 关系目标实体是否存在,关联字段数量是否与主键一致。
- 多对多关系
linking.object是否存在。 - 策略引用的字段是否有效。
- 缓存 TTL 是否为非负整数。
常见错误:
| 错误 | 修复 |
|---|---|
| 视图缺少主键 | 添加 source.key-fields 或 fields[].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
doneCI 流水线
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。
下一步
- dab start — 启动服务。
- dab configure — 修改配置。
