DAB安装与配置技能Skill setup-dab

此技能用于安装和配置Microsoft Data API Builder (DAB),实现生产级SQL Server MCP集成,支持基于角色的访问控制(RBAC)、自动缓存、内置遥测和确定性查询,便于构建安全、高效的API服务。关键词包括:DAB、SQL Server、MCP、RBAC、API开发、数据访问控制、后端集成。

后端开发 0 次安装 0 次浏览 更新于 3/11/2026

名称: 设置-dab 描述: 安装和配置Data API Builder (DAB) 用于生产级SQL Server MCP访问与RBAC 参数提示: “[–init] [–add <实体>] [–verify]” 允许工具: Bash, Read, Write, Edit, AskUserQuestion

/microsoft:setup-dab

安装和配置Microsoft Data API Builder (DAB) 用于生产就绪的SQL Server MCP集成。

概述

Data API Builder (DAB) 为SQL Server提供生产级MCP服务器,具有:

  • RBAC: 基于角色的实体访问控制
  • 缓存: 自动结果缓存
  • 遥测: 内置可观察性
  • 确定性查询: NL2DAB替代脆弱的NL2SQL

参数

$ARGUMENTS解析参数:

标志 描述 默认值
--init 初始化新的DAB配置 false
--add <实体> 向配置中添加实体 (无)
--verify 验证现有设置 false

先决条件

  • .NET 8 SDK 或更高版本
  • 可访问连接字符串的SQL Server数据库
  • 要公开为实体的表/视图

工作流程

步骤 1: 检查DAB安装

# 检查DAB是否全局安装
dotnet tool list -g | grep -i dataapibuilder

# 检查版本
dab --version

如果未安装:

未找到Data API Builder。

正在全局安装DAB...
  dotnet tool install -g microsoft.dataapibuilder --prerelease

注意:使用--prerelease以获取最新MCP功能。

安装命令:

dotnet tool install -g microsoft.dataapibuilder --prerelease

步骤 2: 初始化配置 (–init)

如果指定--init或不存在dab-config.json:

DAB配置向导

Data API Builder需要实体配置以保障安全。
与原始SQL访问不同,DAB仅公开预批准的实体。

连接字符串设置
-----------------------
输入您的SQL Server连接字符串(将存储为环境变量引用):

使用AskUserQuestion获取连接字符串方法:

您希望如何配置连接字符串?

选项:
1. 环境变量(推荐)- 引用$DAB_CONNECTION_STRING
2. 直接输入 - 存储在dab-config.json中(安全性较低)

使用环境变量初始化:

dab init --database-type mssql --connection-string "@env('DAB_CONNECTION_STRING')" --config dab-config.json

步骤 3: 添加实体

提示用户添加实体:

实体配置
--------------------
DAB需要为每个要公开的表/视图定义明确实体。

您希望:
1. 现在添加一个实体
2. 跳过(稍后配置)

如果添加实体:

实体详情

  表/视图名称(例如,dbo.Products):
  实体名称(例如,Products):
  权限:
    - anonymous:read(只读,无需认证)
    - anonymous:*(完全访问,无需认证)
    - authenticated:read(只读,需要认证)
    - authenticated:*(完全访问,需要认证)

添加实体命令:

# 只读访问
dab add Products --source dbo.Products --permissions "anonymous:read"

# 完全CRUD访问
dab add Products --source dbo.Products --permissions "anonymous:*"

# 指定操作
dab add Products --source dbo.Products --permissions "anonymous:read,create"

步骤 4: 验证配置 (–verify)

如果指定--verify

# 检查配置文件
cat dab-config.json

# 验证配置
dab validate --config dab-config.json

# 检查环境变量
echo $DAB_CONNECTION_STRING

报告状态:

DAB配置验证

  配置文件: dab-config.json
  验证: 通过
  数据库类型: mssql
  连接: @env('DAB_CONNECTION_STRING')

  实体:
    - Products (dbo.Products) - anonymous:read
    - Orders (dbo.Orders) - anonymous:read
    - Customers (dbo.Customers) - authenticated:*

  环境:
    DAB_CONNECTION_STRING: 已设置

  状态: 准备启动

步骤 5: 配置Claude代码

DAB默认未启用在插件中。将mssql-dab添加到项目的.claude/settings.json

{
  "mcpServers": {
    "mssql-dab": {
      "type": "http",
      "url": "http://localhost:5000/mcp"
    }
  }
}

或在全局启用,添加到~/.claude.jsonmcpServers下。

步骤 6: 启动说明

设置完成 - 启动DAB

重要:DAB使用HTTP传输。您必须单独启动DAB。

启动DAB服务器(在单独终端运行):

  # 设置连接字符串(如果未在配置文件中)
  export DAB_CONNECTION_STRING="Server=localhost;Database=test;..."

  # 启动DAB - 这运行一个Web服务器,在/mcp暴露MCP
  dab start --config dab-config.json

  # DAB默认监听http://localhost:5000
  # MCP端点: http://localhost:5000/mcp

可用MCP工具(一旦DAB运行):
  - describe_entities - 列出可用实体和属性
  - create_record - 插入新数据
  - read_records - 查询数据(自动缓存)
  - update_record - 修改数据
  - delete_record - 删除数据
  - execute_entity - 执行存储过程

输出格式

安装成功:

Data API Builder设置

阶段1: 安装
  检查全局工具...
  未找到DAB,正在安装...
  dotnet tool install -g microsoft.dataapibuilder --prerelease
  已安装: microsoft.dataapibuilder 2.0.0-preview

阶段2: 配置
  数据库类型: mssql
  连接: @env('DAB_CONNECTION_STRING')
  配置文件: dab-config.json

阶段3: 实体
  尚未配置任何实体。

  添加实体:
    dab add <实体名称> --source <架构.表> --permissions "anonymous:read"

  示例:
    dab add Products --source dbo.Products --permissions "anonymous:read"
    dab add Orders --source dbo.Orders --permissions "authenticated:*"

设置完成

需要环境变量:
  DAB_CONNECTION_STRING="Server=...;Database=...;..."

测试:
  dab start --config dab-config.json
  /microsoft:mssql status --dab

验证输出:

DAB配置验证

配置: dab-config.json

  数据库: mssql
  连接: @env('DAB_CONNECTION_STRING')
  主机模式: 开发

实体(3):
  实体       来源           权限
  -----------  --------------  ---------------
  Products     dbo.Products    anonymous:read
  Orders       dbo.Orders      anonymous:read
  Customers    dbo.Customers   authenticated:*

环境:
  DAB_CONNECTION_STRING: 已配置

验证: 通过

准备启动: dab start --config dab-config.json

DAB配置文件

示例dab-config.json

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('DAB_CONNECTION_STRING')"
  },
  "runtime": {
    "rest": { "enabled": true },
    "graphql": { "enabled": true }
  },
  "entities": {
    "Products": {
      "source": "dbo.Products",
      "permissions": [{
        "role": "anonymous",
        "actions": ["read"]
      }]
    }
  }
}

示例

# 安装DAB并创建初始配置
/microsoft:setup-dab --init

# 添加具有只读访问权限的实体
/microsoft:setup-dab --add Products

# 验证现有配置
/microsoft:setup-dab --verify

手动命令

如果您喜欢手动设置:

# 安装DAB
dotnet tool install -g microsoft.dataapibuilder --prerelease

# 初始化配置
dab init --database-type mssql --connection-string "@env('DAB_CONNECTION_STRING')"

# 添加实体
dab add Products --source dbo.Products --permissions "anonymous:read"
dab add Orders --source dbo.Orders --permissions "authenticated:read,create"

# 验证
dab validate

# 启动
dab start

环境变量

变量 必需 描述
DAB_CONNECTION_STRING SQL Server连接字符串(由dab start使用)
DAB_CONFIG_PATH dab-config.json路径(默认: ./dab-config.json)
DAB_MCP_URL MCP端点URL(默认: http://localhost:5000/mcp

连接字符串示例

# 本地SQL Server与Windows认证
DAB_CONNECTION_STRING="Server=localhost;Database=MyDb;Trusted_Connection=True;TrustServerCertificate=True"

# Azure SQL与AD交互式认证
DAB_CONNECTION_STRING="Server=tcp:myserver.database.windows.net,1433;Database=MyDb;Authentication=Active Directory Interactive"

# SQL Server与用户名/密码
DAB_CONNECTION_STRING="Server=localhost;Database=MyDb;User Id=sa;Password=YourPassword;TrustServerCertificate=True"

安全最佳实践

  1. 使用环境变量处理连接字符串
  2. 最小权限原则 - 仅公开必要实体
  3. 尽可能使用只读权限
  4. 为敏感数据启用认证
  5. 在生产部署前审查权限
# 良好: 只读,特定实体
dab add Products --source dbo.Products --permissions "anonymous:read"

# 风险: 对所有操作完全访问
dab add AllData --source dbo.SensitiveTable --permissions "anonymous:*"

故障排除

DAB安装失败:

如果dotnet工具安装失败:
  1. 检查是否安装.NET 8+: dotnet --version
  2. 清除NuGet缓存: dotnet nuget locals all --clear
  3. 检查网络/代理设置
  4. 尝试不使用--prerelease以获取稳定版本

连接失败:

如果DAB无法连接:
  1. 验证连接字符串格式
  2. 检查SQL Server是否运行
  3. 验证防火墙是否允许连接
  4. 测试: sqlcmd -S <服务器> -d <数据库>

实体添加失败:

如果dab add失败:
  1. 验证表/视图是否存在数据库中
  2. 检查架构名称(dbo.表名 而非仅表名)
  3. 确保用户对表有SELECT权限

DAB vs MssqlMcp

功能 DAB MssqlMcp
访问控制 RBAC,实体级别 仅连接级别
查询类型 NL2DAB(确定性) NL2SQL(脆弱)
生产就绪 实验性
设置复杂性 较高(实体配置) 较低(仅连接)
缓存 内置
最佳适用 生产应用 快速探索

相关命令

  • /microsoft:mssql - 管理MssqlMcp服务器(状态、重建、更新)

文档