Skills-for-fabric sqldw-consumption-cli
install
source · Clone the upstream repo
git clone https://github.com/microsoft/skills-for-fabric
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/microsoft/skills-for-fabric "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/sqldw-consumption-cli" ~/.claude/skills/microsoft-skills-for-fabric-sqldw-consumption-cli && rm -rf "$T"
manifest:
skills/sqldw-consumption-cli/SKILL.mdsource content
Update Check — ONCE PER SESSION (mandatory) The first time this skill is used in a session, run the check-updates skill before proceeding.
- GitHub Copilot CLI / VS Code: invoke the
skill.check-updates- Claude Code / Cowork / Cursor / Windsurf / Codex: compare local vs remote package.json version.
- Skip if the check was already performed earlier in this session.
CRITICAL NOTES
- To find the workspace details (including its ID) from workspace name: list all workspaces and, then, use JMESPath filtering
- To find the item details (including its ID) from workspace ID, item type, and item name: list all items of that type in that workspace and, then, use JMESPath filtering
SQL Endpoint Consumption — CLI Skill
Table of Contents
| Task | Reference | Notes |
|---|---|---|
| Finding Workspaces and Items in Fabric | COMMON-CLI.md § Finding Workspaces and Items in Fabric | Mandatory — READ link first [needed for finding workspace id by its name or item id by its name, item type, and workspace id] |
| Fabric Topology & Key Concepts | COMMON-CORE.md § Fabric Topology & Key Concepts | |
| Environment URLs | COMMON-CORE.md § Environment URLs | |
| Authentication & Token Acquisition | COMMON-CORE.md § Authentication & Token Acquisition | Wrong audience = 401; read before any auth issue |
| Core Control-Plane REST APIs | COMMON-CORE.md § Core Control-Plane REST APIs | Includes pagination, LRO polling, and rate-limiting patterns |
| OneLake Data Access | COMMON-CORE.md § OneLake Data Access | Requires token, not Fabric token |
| Job Execution | COMMON-CORE.md § Job Execution | |
| Capacity Management | COMMON-CORE.md § Capacity Management | |
| Gotchas, Best Practices & Troubleshooting | COMMON-CORE.md § Gotchas, Best Practices & Troubleshooting | |
| Tool Selection Rationale | COMMON-CLI.md § Tool Selection Rationale | |
| Authentication Recipes | COMMON-CLI.md § Authentication Recipes | flows and token acquisition |
Fabric Control-Plane API via | COMMON-CLI.md § Fabric Control-Plane API via az rest | Always pass ; includes pagination and LRO helpers |
OneLake Data Access via | COMMON-CLI.md § OneLake Data Access via curl | Use not (different token audience) |
| SQL / TDS Data-Plane Access | COMMON-CLI.md § SQL / TDS Data-Plane Access | (Go) connect, query, CSV export |
| Job Execution (CLI) | COMMON-CLI.md § Job Execution | |
| OneLake Shortcuts | COMMON-CLI.md § OneLake Shortcuts | |
| Capacity Management (CLI) | COMMON-CLI.md § Capacity Management | |
| Composite Recipes | COMMON-CLI.md § Composite Recipes | |
| Gotchas & Troubleshooting (CLI-Specific) | COMMON-CLI.md § Gotchas & Troubleshooting (CLI-Specific) | audience, shell escaping, token expiry |
| Quick Reference | COMMON-CLI.md § Quick Reference | template + token audience/tool matrix |
| Item-Type Capability Matrix | SQLDW-CONSUMPTION-CORE.md § Item-Type Capability Matrix | Read first — shows what's read-only (SQLEP) vs read-write (DW) |
| Connection Fundamentals | SQLDW-CONSUMPTION-CORE.md § Connection Fundamentals | TDS, port 1433, Entra-only, no MARS |
| Supported T-SQL Surface Area (Consumption Focus) | SQLDW-CONSUMPTION-CORE.md § Supported T-SQL Surface Area | Read before writing T-SQL — includes data types (no //) |
| Read-Side Objects You Can Create | SQLDW-CONSUMPTION-CORE.md § Read-Side Objects You Can Create | Views, TVFs, scalar UDFs, procedures |
| Temporary Tables | SQLDW-CONSUMPTION-CORE.md § Temporary Tables | Use for INSERT INTO SELECT support |
| Cross-Database Queries | SQLDW-CONSUMPTION-CORE.md § Cross-Database Queries | 3-part naming, same workspace |
| Security for Consumption | SQLDW-CONSUMPTION-CORE.md § Security for Consumption | GRANT/DENY, RLS, CLS, DDM |
| Monitoring and Diagnostics | SQLDW-CONSUMPTION-CORE.md § Monitoring and Diagnostics | Includes query labels; DMVs (live) + (30-day history) |
| Performance: Best Practices and Troubleshooting | SQLDW-CONSUMPTION-CORE.md § Performance: Best Practices and Troubleshooting | Statistics, caching, clustering, query tips |
| REST API: Refresh SQL Endpoint Metadata | SQLDW-CONSUMPTION-CORE.md § REST API: Refresh SQL Endpoint Metadata | Force metadata sync when SQLEP data is stale after ETL |
| System Catalog Queries (Metadata Exploration) | SQLDW-CONSUMPTION-CORE.md § System Catalog Queries | , , , |
| Common Consumption Patterns (End-to-End Examples) | SQLDW-CONSUMPTION-CORE.md § Common Consumption Patterns | Reporting views, cross-DB analytics, temp table staging |
| Gotchas and Troubleshooting Reference | SQLDW-CONSUMPTION-CORE.md § Gotchas and Troubleshooting Reference | 18 numbered issues with cause + resolution |
| Quick Reference: Consumption Capabilities by Scenario | SQLDW-CONSUMPTION-CORE.md § Quick Reference: Consumption Capabilities | Scenario → approach lookup |
| Schema and Object Discovery | discovery-queries.md § Schema and Object Discovery | Tables, columns, views, functions, procedures, cross-DB |
| Security Discovery | discovery-queries.md § Security Discovery | |
| Statistics and Performance Metadata | discovery-queries.md § Statistics and Performance Metadata | |
| Bash — Data Export | script-templates.md § Bash — Data Export | Query to CSV + parameterized date range export |
| Bash — Schema Discovery Report | script-templates.md § Bash — Schema Discovery Report | |
| Bash — Performance Investigation | script-templates.md § Bash — Performance Investigation | |
| PowerShell Templates | script-templates.md § PowerShell Templates | Query to CSV + schema discovery |
| Tool Stack | SKILL.md § Tool Stack | |
| Connection | SKILL.md § Connection | |
| Agentic Exploration ("Chat With My Data") | SKILL.md § Agentic Exploration | Start here for data exploration |
| Script Generation | consumption-cli-quickref.md § Script Generation | Formatting flags, piped input, parameterized queries |
| Monitoring and Performance | consumption-cli-quickref.md § Monitoring and Performance | Active queries DMV, KILL syntax |
| Gotchas, Rules, Troubleshooting | SKILL.md § Gotchas, Rules, Troubleshooting | MUST DO / AVOID / PREFER checklists |
| Agent Integration Notes | consumption-cli-quickref.md § Agent Integration Notes | Per-agent CLI tips |
Tool Stack
| Tool | Role | Install |
|---|---|---|
(Go) | Primary: Execute T-SQL. Standalone binary, no ODBC driver, built-in Entra ID auth via . | / / |
CLI | Auth (), token acquisition, Fabric REST for endpoint discovery. | Pre-installed in most dev environments |
| Parse JSON from | Pre-installed or trivial |
Agent check — verify before first SQL operation:
sqlcmd --version 2>/dev/null || echo "INSTALL: winget install sqlcmd OR brew install sqlcmd"
Connection
Discover the SQL Endpoint FQDN
Per COMMON-CLI.md Discovering Connection Parameters via REST:
WS_ID="<workspaceId>" ITEM_ID="<warehouseOrLakehouseId>" # Warehouse az rest --method get \ --resource "https://api.fabric.microsoft.com" \ --url "https://api.fabric.microsoft.com/v1/workspaces/$WS_ID/warehouses/$ITEM_ID" \ --query "properties.connectionString" --output tsv # Lakehouse SQL endpoint az rest --method get \ --resource "https://api.fabric.microsoft.com" \ --url "https://api.fabric.microsoft.com/v1/workspaces/$WS_ID/lakehouses/$ITEM_ID" \ --query "properties.sqlEndpointProperties.connectionString" --output tsv
Result:
<uniqueId>.datawarehouse.fabric.microsoft.com
Connect with sqlcmd (Go)
# Interactive session (Entra login via browser if needed) sqlcmd -S "<endpoint>.datawarehouse.fabric.microsoft.com" -d "<DatabaseName>" -G # Non-interactive one-shot query sqlcmd -S "<endpoint>.datawarehouse.fabric.microsoft.com" -d "<DatabaseName>" -G \ -Q "SELECT TOP 10 * FROM dbo.FactSales" # Explicit ActiveDirectoryDefault (uses az login session) sqlcmd -S "<endpoint>.datawarehouse.fabric.microsoft.com" -d "<DatabaseName>" \ --authentication-method ActiveDirectoryDefault \ -Q "SELECT TOP 10 * FROM dbo.FactSales" # Service principal (CI/CD) SQLCMDPASSWORD="<clientSecret>" \ sqlcmd -S "<endpoint>.datawarehouse.fabric.microsoft.com" -d "<DatabaseName>" \ --authentication-method ActiveDirectoryServicePrincipal \ -U "<appId>" \ -Q "SELECT COUNT(*) FROM dbo.FactSales"
Reusable Connection Variables
# Set once at script top FABRIC_SERVER="<endpoint>.datawarehouse.fabric.microsoft.com" FABRIC_DB="<DatabaseName>" SQLCMD="sqlcmd -S $FABRIC_SERVER -d $FABRIC_DB -G" # Use throughout $SQLCMD -Q "SELECT TOP 5 * FROM dbo.DimProduct" $SQLCMD -i myscript.sql
PowerShell / Windows CMD
# PowerShell $s = "<endpoint>.datawarehouse.fabric.microsoft.com"; $db = "<DatabaseName>" sqlcmd -S $s -d $db -G -Q "SELECT TOP 10 * FROM dbo.FactSales" # CMD: use set S=... and %S% / %DB% instead of $variables
Agentic Exploration ("Chat With My Data")
Schema Discovery Sequence
Run these in order to understand what's in the endpoint. See references/discovery-queries.md for extended discovery queries.
# 1. List schemas $SQLCMD -Q "SELECT schema_name FROM information_schema.schemata ORDER BY schema_name" -W # 2. List tables and views $SQLCMD -Q "SELECT table_schema, table_name, table_type FROM information_schema.tables ORDER BY table_schema, table_name" -W # 3. Columns for a table $SQLCMD -Q "SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns WHERE table_schema='dbo' AND table_name='FactSales' ORDER BY ordinal_position" -W # 4. Preview rows $SQLCMD -Q "SELECT TOP 5 * FROM dbo.FactSales" -W # 5. Row counts $SQLCMD -Q "SELECT s.name AS [schema], t.name AS [table], SUM(p.rows) AS row_count FROM sys.tables t JOIN sys.schemas s ON t.schema_id=s.schema_id JOIN sys.partitions p ON t.object_id=p.object_id AND p.index_id IN (0,1) GROUP BY s.name, t.name ORDER BY row_count DESC" -W # 6. Programmability objects (views, functions, procedures) $SQLCMD -Q "SELECT name, type_desc FROM sys.objects WHERE type IN ('V','FN','IF','P','TF') ORDER BY type_desc, name" -W
Agentic Workflow
- Discover → Run Steps 1–3 to understand available tables/columns.
- Sample →
on relevant tables.SELECT TOP 5 - Formulate → Write T-SQL using SQLDW-CONSUMPTION-CORE.md Supported T-SQL Surface Area.
- Execute →
.$SQLCMD -Q "..." - Iterate → Refine based on results.
- Present → Show results or generate a reusable script (Script Generation section).
Gotchas, Rules, Troubleshooting
For full T-SQL/platform gotchas: SQLDW-CONSUMPTION-CORE.md Gotchas and Troubleshooting Reference and COMMON-CLI.md Gotchas & Troubleshooting (CLI-Specific).
MUST DO
- Always
— FQDN alone is insufficient.-d <DatabaseName> - Always
or-G
— SQL auth not supported on Fabric.--authentication-method
first —az login
uses az session. No session → cryptic failure.ActiveDirectoryDefault
in scripts — suppresses row-count messages that corrupt output.SET NOCOUNT ON;- Label queries with
for Query Insights tracing.OPTION (LABEL = 'AGENTCLI_...')
AVOID
- ODBC sqlcmd (
) — requires ODBC driver. Use Go version./opt/mssql-tools/bin/sqlcmd - Omitting
in scripts — trailing spaces corrupt CSV.-W - DML on SQLEP — Lakehouse/Mirrored DB endpoints are read-only. DML only on Warehouse.
- MARS — not supported. Remove
from connection strings.MultipleActiveResultSets - Hardcoded FQDNs — discover via REST API (Discover the SQL Endpoint FQDN).
PREFER
over curl+token for SQL queries.sqlcmd (Go) -G
(non-interactive exit) for agentic use.-Q- Piped input for multi-statement batches or queries with quotes.
for complex queries — avoids shell escaping.-i file.sql
for exploration of wide tables.-F vertical- Env vars (
,FABRIC_SERVER
) for script reuse.FABRIC_DB
for Fabric REST API — use sqlcmd only for T-SQL.az rest
TROUBLESHOOTING
| Symptom | Cause | Fix |
|---|---|---|
| Wrong DB name or no access | Verify matches item name exactly (case-sensitive) |
| Wrong FQDN or network | Re-discover via REST API; check port 1433 |
| Port 1433 blocked | ; check firewall/VPN |
failure | expired or wrong tenant | |
| Garbled CSV output | Missing or wrong | Add |
in file | No | Prepend |
| New warehouse < 2 min old | Wait ~2 minutes |
| No rows but data exists | RLS filtering | Check , verify RLS policies |
not found | Go version not installed | / |