Skip to content

命令行工具

数据墙DBW 提供了一个 dab 命令行工具,用于创建配置、管理实体、修改设置、启动服务和校验配置。所有对 JSON 配置文件的修改都可以通过 CLI 完成,无需手动编辑 JSON。

安装

dab 通过 .NET 工具分发:

bash
dotnet tool install --global Microsoft.DataApiBuilder

更新到最新版:

bash
dotnet tool update --global Microsoft.DataApiBuilder

验证安装:

bash
dab --version

dab init — 初始化配置

创建一个新的配置文件,指定数据库类型和连接信息:

bash
dab init \
  --database-type "mssql" \
  --connection-string "@env('SQL_CONN_STRING')" \
  --host-mode "Development" \
  --config "dab-config.json"

常用参数

参数说明默认值
--database-type数据库类型:mssqlpostgresqlmysql
--connection-string数据库连接字符串,支持 @env()
--host-mode运行模式:DevelopmentProductionProduction
--config输出的配置文件名dab-config.json
--auth.provider身份验证提供程序Unauthenticated
--auth.issuerJWT issuer(Custom 提供程序时使用)
--auth.audienceJWT audience(Custom 提供程序时使用)
--graphql.enabled是否启用 GraphQLtrue
--graphql.pathGraphQL 端点前缀/graphql
--graphql.multiple-create.enabled允许多个 create mutationfalse
--rest.enabled是否启用 RESTtrue
--rest.pathREST 端点前缀/api
--rest.request-body-strict严格校验请求体false
--mcp.enabled是否启用 MCPtrue
--mcp.pathMCP 端点前缀/mcp
--mcp.aggregate-records.query-timeoutaggregate-records 工具超时(秒,1-600)30
--runtime.base-route所有端点的全局前缀(需配合 --auth.provider StaticWebApps
--cors-origin允许的跨域来源(逗号分隔)
--set-session-context启用 SQL Server 会话上下文false

WARNING

如果目标配置文件已存在,dab init 会直接覆盖,不会合并。如需保留旧文件,请先备份或使用版本控制。

dab add — 添加实体

将数据库对象注册为 API 实体:

bash
# 添加表实体
dab add Book \
  --source "dbo.books" \
  --permissions "anonymous:read"

# 添加视图实体,指定主键
dab add BookDetail \
  --source "dbo.vw_books_details" \
  --source.type "view" \
  --fields.name "id" \
  --fields.primary-key "true" \
  --permissions "anonymous:read"

# 添加存储过程实体
dab add GetBookById \
  --source "dbo.get_book_by_id" \
  --source.type "stored-procedure" \
  --parameters.name "id" \
  --parameters.required "true" \
  --permissions "anonymous:execute" \
  --rest.methods "GET" \
  --graphql.operation "query"

常用参数

参数说明
--source数据库对象名称(schema.name
--source.type对象类型:table(默认)、viewstored-procedure
--permissions权限配置,格式 "角色:操作",多个用逗号分隔
--fields.name数据库字段名
--fields.aliasAPI 中的字段别名
--fields.primary-key标记主键字段(true / false
--rest.path自定义 REST 路径
--rest.methods允许的 HTTP 方法(仅存储过程)
--rest.enabled启用或禁用 REST
--graphql.enabled启用或禁用 GraphQL
--graphql.operation存储过程挂载位置:query / mutation
--graphql.type.singularGraphQL 单数类型名
--graphql.type.pluralGraphQL 复数类型名
--fields.name数据库字段名
--fields.aliasAPI 中的字段别名
--fields.primary-key标记主键字段(true / false
--fields.include允许暴露的字段列表
--fields.exclude排除的字段列表
--description实体说明,供 MCP 和文档使用
--parameters.name存储过程参数名
--parameters.required是否必需(true / false
--parameters.default参数默认值
--cache.enabled启用实体缓存
--cache.ttl-seconds缓存生存时间(秒)
--cache.level缓存层级:L1 / L1L2
--mcp.dml-tools是否暴露 MCP DML 工具
--mcp.custom-tool是否注册为 MCP 自定义工具(仅存储过程)
--health.enabled启用实体健康检查

权限格式

"角色:操作,角色:操作"

示例:
"anonymous:read"
"anonymous:read,authenticated:*"

dab update — 更新实体

修改已存在的实体配置,参数与 dab add 基本一致:

bash
# 修改权限
dab update Book --permissions "authenticated:*"

# 添加关系
dab update Book \
  --relationship book_category \
  --target.entity Category \
  --cardinality one \
  --relationship.fields "category_id:id"

# 启用缓存
dab update Product --cache.enabled true --cache.ttl-seconds 60

dab configure — 修改运行时配置

修改 runtime 块中的全局设置:

bash
# 设置运行模式
dab configure --runtime.host.mode "production"

# 关闭 GraphQL
dab configure --runtime.graphql.enabled false

# 设置分页
dab configure --runtime.pagination.default-page-size 50

# 配置身份验证
dab configure --runtime.host.authentication.provider "Custom" \
  --runtime.host.authentication.jwt.issuer "https://idp.example.com" \
  --runtime.host.authentication.jwt.audience "dab-api"

# 配置日志级别
dab configure --runtime.telemetry.log-level.default "Warning"

# 启用文件遥测
dab configure --runtime.telemetry.file_enabled true

# 配置遥测文件路径
dab configure --runtime.telemetry.file.path "/var/log/dab-telemetry.json"

# 配置请求体严格校验
dab configure --runtime.rest.request-body-strict true

# 配置 GraphQL 路径
dab configure --runtime.graphql.path "/api/graphql"

dab start — 启动服务

bash
dab start

常用参数

参数说明
--config指定配置文件路径。默认查找 dab-config.json,但如果存在 dab-config.<DAB_ENVIRONMENT>.json 则优先使用
--LogLevel覆盖日志级别(TraceCritical
--verbose等同于 --LogLevel Information
--no-https-redirect禁用 HTTP→HTTPS 自动重定向
--mcp-stdio以 MCP Stdio 传输模式启动(而非 HTTP),需启用 MCP。强制使用 Simulator 认证、UTF-8 编码、不绑定 HTTP 端口。支持 --mcp-stdio role:authenticated 指定角色

配合 DAB_ENVIRONMENT 环境变量加载不同环境配置:

bash
DAB_ENVIRONMENT=Production dab start

dab validate — 校验配置

检查配置文件的语法正确性和引用完整性:

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

校验内容包括:

  • JSON 语法是否正确。
  • 字段名和类型是否符合 Schema 定义。
  • 数据源配置是否完整(database-typeconnection-string 必须存在)。
  • 实体引用是否有效(source.object 格式、permissions.role 合法)。
  • 关系引用是否指向存在的实体。
  • 配置文件路径引用是否有效(data-source-files)。

成功:无输出,退出码 0。失败:输出错误详情。

TIP

建议将 dab validate 加入 CI/CD 流水线,部署前自动校验配置,防止错误配置上线。

dab auto-config — 自动实体发现

扫描数据库并将所有匹配的表自动生成 autoentities 配置:

bash
dab auto-config \
  --database-type "mssql" \
  --connection-string "Server=localhost;Database=todos;..." \
  --config "dab-config.json"

预览模式

bash
dab auto-config-simulate \
  --database-type "mssql" \
  --connection-string "Server=localhost;Database=todos;..."

auto-config-simulate 只输出哪些表会被匹配,不修改配置文件。适合在正式执行前确认匹配范围。

常用参数

参数说明
--database-type数据库类型
--connection-string连接字符串
--config目标配置文件
--autoentities.include包含模式(SQL LIKE 语法)
--autoentities.exclude排除模式
--autoentities.name实体命名模板({schema}_{object}
--autoentities.rest.enabled匹配实体是否启用 REST
--autoentities.graphql.enabled匹配实体是否启用 GraphQL
--autoentities.mcp.dml-tools匹配实体是否启用 MCP 工具
--autoentities.cache.enabled匹配实体是否启用缓存
--autoentities.permissions匹配实体的默认权限
--csv-output以 CSV 格式输出匹配结果(预览模式)

命令速查

命令用途修改配置文件
init创建新配置文件是(覆盖)
add添加实体
update修改实体配置
configure修改运行时配置
start启动服务
validate校验配置文件
auto-config生成 autoentities
auto-config-simulate预览 auto-config 匹配结果
export导出配置

下一步

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