关于 mssql
这项技能通过 `mssql` 命令行工具检查和查询 Microsoft SQL Server 数据库。它优先使用只读查询和结构检查,并要求执行不受限制的写入命令前获得用户明确批准。
主要功能
- 01管理已保存的数据库连接
- 02执行只读 SQL 查询
- 03检查表结构和索引
- 04输出 JSON 或文本
- 05修改 SQL 前要求批准
适用场景
- 01查询前检查数据表
- 02运行只读报表和计数
- 03检查数据库连通性
- 04执行已获批准的数据修复
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ billpeet/ agent-skills --skill mssql安装后在 Claude Code 中输入/mssql确认已加载。
详细介绍
Microsoft SQL Server
使用 mssql CLI 与 Microsoft SQL Server 数据库交互。所有命令默认输出 JSON,便于可靠解析。
重要 — Agent 安全规则:
- 未经用户明确批准,绝不要运行
mssql sql-dangerous。 执行前,务必向用户展示完整的 SQL 查询,并解释其作用。此命令可能会修改或销毁数据(INSERT、UPDATE、DELETE、DROP 等)。- 读取数据时优先使用
mssql sql。 SELECT 查询请使用只读命令mssql sql。它会自动拦截危险语句。- 需要了解表结构时,优先使用
mssql schema,而不是原始查询。- 如果不确定数据库架构,请先使用
mssql schema检查,不要猜测列名或表名。
设置
添加服务器连接
mssql server add --name mydb --server localhost --database MyDatabase --user sa --password "secret" --format json
mssql server add --name mydb --server db.example.com --database MyDatabase --windows-auth --trust-cert --format json
第一个添加的服务器会自动设为默认服务器。配置保存在 ~/.config/mssql-cli/config.json。
环境变量
环境变量会创建临时连接,其优先级高于配置文件:
export MSSQL_SERVER=localhost
export MSSQL_DATABASE=MyDatabase
export MSSQL_USER=sa
export MSSQL_PASSWORD=secret
export MSSQL_PORT=1433 # optional, default 1433
export MSSQL_ENCRYPT=true # optional
export MSSQL_TRUST_CERT=true # optional
export MSSQL_WINDOWS_AUTH=true # optional, use instead of user/password
服务器管理
列出已配置的服务器
mssql server list --format json --pretty
设置默认服务器
mssql server default --name mydb --format json
测试连接
mssql server test --format json
mssql server test --name mydb --format json
移除服务器
mssql server remove --name mydb --format json
查看或更新全局设置
mssql server config --format json
mssql server config --max-rows 500 --format json
maxRows 设置(默认值:100)限制查询返回的行数。达到上限时,结果中会附带截断警告。
查询(只读)
SELECT 查询请使用 mssql sql。此命令会拦截任何可能修改数据的语句(INSERT、UPDATE、DELETE、DROP、CREATE、ALTER、TRUNCATE、MERGE、EXEC 等),并提示你改用 sql-dangerous。
mssql sql --query "SELECT TOP 10 * FROM Users" --format json --pretty
mssql sql --query "SELECT COUNT(*) AS total FROM Orders WHERE Status = 'Pending'" --format json
mssql sql --query "SELECT u.Name, COUNT(o.Id) AS OrderCount FROM Users u JOIN Orders o ON u.Id = o.UserId GROUP BY u.Name" --server mydb --format json --pretty
mssql sql --file report.sql --format json --pretty
使用 --query 执行内联 SQL,或使用 --file 从 .sql 文件读取 SQL。这两个选项不能同时使用。
结果数量受已配置的 maxRows 限制(默认值:100)。如果行数超过此限制,输出中会包含截断警告。
查询(危险 — 修改数据)
Agent:未经用户明确批准,绝不要运行此命令。执行前,务必先向用户展示查询。
需要修改数据或架构的语句请使用 mssql sql-dangerous。此命令没有安全限制。
mssql sql-dangerous --query "INSERT INTO Users (Name, Email) VALUES ('Alice', '[email protected]')" --format json
mssql sql-dangerous --query "UPDATE Orders SET Status = 'Shipped' WHERE Id = 42" --format json
mssql sql-dangerous --query "DELETE FROM Sessions WHERE ExpiresAt < GETDATE()" --format json
mssql sql-dangerous --query "CREATE INDEX IX_Users_Email ON Users(Email)" --format json
mssql sql-dangerous --file migration.sql --format json
与 mssql sql 一样,使用 --query 执行内联 SQL,或使用 --file 从文件读取(两者不能同时使用)。
除结果行外,输出还会包含 rowsAffected 计数。
架构检查
获取一个或多个表的完整架构详情,包括列、数据类型、主键、外键(两个方向)和索引。
mssql schema Users --format json --pretty
mssql schema Users Orders --format json --pretty
mssql schema dbo.Users sales.Orders --format json --pretty
如果未指定架构,表默认使用 dbo 架构。其他架构请使用 schema.table 表示法。
输出格式
所有命令都支持 --format json(紧凑格式,默认)或 --format text(便于阅读的表格)。添加 --pretty 可输出缩进的 JSON。
退出代码:0 = 成功,1 = 错误。错误会以 JSON 格式写入 stderr。
常见工作流
查询前先查看表:
mssql schema Users --format json --pretty
mssql sql --query "SELECT TOP 5 * FROM Users" --format json --pretty
检查多个表的行数:
mssql sql --query "SELECT 'Users' AS TableName, COUNT(*) AS Rows FROM Users UNION ALL SELECT 'Orders', COUNT(*) FROM Orders" --format json --pretty
安全修复数据(务必先与用户确认):
# 1. Check current state
mssql sql --query "SELECT Id, Email FROM Users WHERE Id = 42" --format json --pretty
# 2. After user approval, apply the fix
mssql sql-dangerous --query "UPDATE Users SET Email = '[email protected]' WHERE Id = 42" --format json
# 3. Verify the change
mssql sql --query "SELECT Id, Email FROM Users WHERE Id = 42" --format json --pretty