MSSQL
Run SQL Server queries using scripts/mssql_query.sh.
Quick start
- Ensure credentials exist at:
~/.openclaw/credentials/mssql.env - Run a query:
bash skills/mssql/scripts/mssql_query.sh --query "SELECT TOP 20 name FROM sys.tables" - Save to file:
bash skills/mssql/scripts/mssql_query.sh --query "SELECT TOP 100 * FROM dbo.MyTable" --out /tmp/mytable.dsv
Credentials format
Expected env vars in ~/.openclaw/credentials/mssql.env:
MSSQL_HOSTMSSQL_DBMSSQL_USERMSSQL_PASSWORD- Optional:
MSSQL_PORT(default1433),MSSQL_ENCRYPT(yes/no, defaultyes),MSSQL_TRUST_CERT(yes/no, defaultno),SQLCMD_BIN
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 - Override database:
bash skills/mssql/scripts/mssql_query.sh --db OtherDB --query "SELECT TOP 10 * FROM dbo.Users" - Change delimiter:
bash skills/mssql/scripts/mssql_query.sh --query "SELECT ..." --delim "," - Increase timeout:
bash skills/mssql/scripts/mssql_query.sh --query "SELECT ..." --timeout 180
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
TOPfor 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 setSQLCMD_BIN.- TLS/certificate issues on internal networks -> set
MSSQL_TRUST_CERT=yesin your credentials file. The default isno(certificate validation enabled).