MSSQL
Run SQL Server queries using scripts/mssql_query.sh.
Quick start
- 1. Ensure credentials exist at:
~/.openclaw/credentials/mssql.env
- 2. Run a query:
bash skills/mssql/scripts/mssql_query.sh --query "SELECT TOP 20 name FROM sys.tables"
- 3. Save to file:
INLINECODE3
Credentials format
Expected env vars in ~/.openclaw/credentials/mssql.env:
- - INLINECODE5
- INLINECODE6
- INLINECODE7
- INLINECODE8
- Optional:
MSSQL_PORT (default 1433), MSSQL_ENCRYPT (yes/no, default yes), MSSQL_TRUST_CERT (yes/no, default no), INLINECODE19
The credential file path can be overridden with the MSSQL_ENV_FILE environment variable.
Permissions
Query permissions are controlled entirely at the SQL Server user level. The script does not impose any restrictions on query type — the database user's grants determine what is allowed.
Database reference map
Place your database map at references/DB_MAP.md inside this skill folder. This file tells the agent which databases, schemas, and tables to use and how they relate to each other.
See references/DB_MAP.example.md for the expected format.
Useful patterns
- - Run long query from file:
bash skills/mssql/scripts/mssql_query.sh --file /path/query.sql --out /tmp/out.dsv
bash skills/mssql/scripts/mssql_query.sh --db OtherDB --query "SELECT TOP 10 * FROM dbo.Users"
bash skills/mssql/scripts/mssql_query.sh --query "SELECT ..." --delim ","
INLINECODE26
Output format
Output is delimiter-separated text, not RFC 4180 CSV. Fields are not quoted or escaped. This works well for structured numeric and short-text data. If your columns contain embedded delimiters, quotes, or newlines, the output may be malformed — choose a delimiter that does not appear in the data, or post-process the output.
Best practices
- - Prefer explicit columns over
SELECT *. - Use
TOP for exploratory samples. - Keep queries scoped to the user request.
- Answer in business language by default; provide SQL details when requested.
- Never print or expose credentials in responses.
Troubleshooting
- -
sqlcmd not found -> install sqlcmd v18+ or set SQLCMD_BIN. - TLS/certificate issues on internal networks -> set
MSSQL_TRUST_CERT=yes in your credentials file. The default is no (certificate validation enabled).
MSSQL
使用 scripts/mssql_query.sh 运行 SQL Server 查询。
快速开始
- 1. 确保凭据文件存在于:
~/.openclaw/credentials/mssql.env
- 2. 运行查询:
bash skills/mssql/scripts/mssql_query.sh --query SELECT TOP 20 name FROM sys.tables
- 3. 保存到文件:
bash skills/mssql/scripts/mssql_query.sh --query SELECT TOP 100 * FROM dbo.MyTable --out /tmp/mytable.dsv
凭据格式
~/.openclaw/credentials/mssql.env 中预期的环境变量:
- - MSSQLHOST
- MSSQLDB
- MSSQLUSER
- MSSQLPASSWORD
- 可选:MSSQLPORT(默认 1433)、MSSQLENCRYPT(yes/no,默认 yes)、MSSQLTRUSTCERT(yes/no,默认 no)、SQLCMD_BIN
凭据文件路径可通过 MSSQLENVFILE 环境变量覆盖。
权限
查询权限完全由 SQL Server 用户级别控制。该脚本不对查询类型施加任何限制——数据库用户的授权决定了允许的操作。
数据库参考映射
将数据库映射文件放置在技能文件夹内的 references/DB_MAP.md。该文件告知代理应使用哪些数据库、模式和表,以及它们之间的关联关系。
请参阅 references/DB_MAP.example.md 了解预期格式。
实用模式
bash skills/mssql/scripts/mssql_query.sh --file /path/query.sql --out /tmp/out.dsv
bash skills/mssql/scripts/mssql_query.sh --db OtherDB --query SELECT TOP 10 * FROM dbo.Users
bash skills/mssql/scripts/mssql_query.sh --query SELECT ... --delim ,
bash skills/mssql/scripts/mssql_query.sh --query SELECT ... --timeout 180
输出格式
输出为分隔符分隔的文本,而非 RFC 4180 CSV。字段不会被引号包裹或转义。这适用于结构化数值和短文本数据。如果列中包含嵌入的分隔符、引号或换行符,输出可能会格式错误——请选择数据中不存在的分隔符,或对输出进行后处理。
最佳实践
- - 优先使用显式列而非 SELECT *。
- 使用 TOP 进行探索性采样。
- 保持查询范围限定在用户请求内。
- 默认使用业务语言回答;在要求时提供 SQL 细节。
- 切勿在响应中打印或暴露凭据。
故障排除
- - sqlcmd not found -> 安装 sqlcmd v18+ 或设置 SQLCMDBIN。
- 内部网络上的 TLS/证书问题 -> 在凭据文件中设置 MSSQLTRUST_CERT=yes。默认值为 no(启用证书验证)。