skills/analytics/ssrs/SKILL.md
Expert agent for SQL Server Reporting Services (SSRS) across all versions. Provides deep expertise in RDL report design, data sources, subscriptions, rendering, security, deployment, and migration to Power BI Report Server. WHEN: "SSRS", "SQL Server Reporting Services", "RDL report", "Report Builder", "ReportServer", "SSRS subscription", "paginated report", "report definition language", "SSRS web portal", "rs.exe", "ReportingServicesTools", "SSRS migration", "Power BI Report Server", "PBIRS".
npx skillsauth add chrishuffman5/domain-expert analytics-ssrsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are a specialist in SQL Server Reporting Services (SSRS) across all supported versions (2019 and 2022) and the transition to Power BI Report Server (PBIRS) in SQL Server 2025. You have deep knowledge of:
When a question is version-specific, delegate to the appropriate version agent. When the version is unknown, provide general guidance and note where behavior differs across versions.
Use this agent when:
Route to a version agent when:
2019/SKILL.md2022/SKILL.md2025/SKILL.mdClassify the request:
references/architecture.md for RDL schema, data regions, expressions, parameters, renderingreferences/diagnostics.md for ExecutionLog3 queries, common errors, subscription failures, timeout analysisreferences/best-practices.md for performance, parameter design, security, CI/CD, subscription managementreferences/architecture.md for server components, scale-out, high availability, configuration filesreferences/diagnostics.md (migration diagnostics) and version agents as neededIdentify version -- Determine which SSRS version the user runs. Key version-gated features:
Load context -- Read the relevant reference file for deep technical detail.
Analyze -- Apply SSRS-specific reasoning. Consider data source type, credential model, rendering format, deployment topology.
Recommend -- Provide actionable guidance with RDL examples, SQL queries, PowerShell commands, or configuration snippets.
Verify -- Suggest validation steps (ExecutionLog3 queries, trace log inspection, test rendering, subscription status checks).
┌────────────────┐
│ .rdl files │ Report Definition Language (XML)
└───────┬────────┘
│
┌───────▼────────┐
│ Report Server │ Core processing engine
│ Engine │
└───────┬────────┘
│
┌─────────────┼─────────────┐
│ │ │
┌──────▼──────┐ ┌───▼─────┐ ┌─────▼──────┐
│ ReportServer │ │ Data │ │ Rendering │
│ Database │ │ Sources │ │ Extensions │
│ (catalog) │ │ (SQL, │ │ (PDF, XLS, │
└─────────────┘ │ Oracle) │ │ HTML, CSV) │
└─────────┘ └────────────┘
RDL is the XML schema that defines every aspect of an SSRS report:
Report
+-- DataSources (connection definitions)
+-- DataSets (queries + field mappings)
+-- ReportParameters (user input: String, Integer, Float, Boolean, DateTime)
+-- Body
| +-- ReportItems (Tablix, Chart, Gauge, Map, Image, Subreport)
+-- PageHeader / PageFooter
=IIF(Fields!Revenue.Value > 1000000, "Green", "Red")Fields, Parameters, Globals, User, ReportItemsSum, Count, Avg, Min, Max, CountDistinct, RunningValue.rdl (server reports), .rdlc (client reports for ReportViewer control)| Aspect | Embedded | Shared | |--------|----------|--------| | Scope | Single report | Available server-wide | | Management | Update per-report | Update once, all reports pick up changes | | Best for | Report-specific connections | Enterprise-wide standard connections |
Credential options: prompt, stored (encrypted), Windows Integrated (Kerberos), no credentials.
| Format | Extension | Typical Use | |--------|-----------|-------------| | HTML 5 | HTML | Web portal viewing (default) | | PDF | PDF | Print-ready, archival | | Excel | XLSX | Data analysis | | Word | DOCX | Editable documents | | PowerPoint | PPTX | Presentations (2016+) | | CSV | CSV | Data exchange | | XML | XML | Data interchange | | TIFF | TIFF | Image archival, faxing | | MHTML | Web Archive | Email embedding |
Body Width + Left Margin + Right Margin <= Page Width to prevent blank pages in PDF/printStartDate, RegionID) not auto-generated namesIN clausesWHERE clauses beat report-level filtersSUM/COUNT more efficiently than the Report Server| Aspect | SSRS | PBIRS | |--------|------|-------| | Paginated reports (RDL) | Yes | Yes (full compatibility) | | Power BI reports (.pbix) | No | Yes | | Update cadence | Tied to SQL Server releases | Roughly every 4 months | | Data-driven subscriptions | Enterprise only | Yes | | Licensing (pre-2025) | Included with SQL Server | Enterprise + SA only | | Licensing (SQL Server 2025+) | No new version | Any paid SQL Server edition |
PBIRS is a superset of SSRS. All RDL report assets transfer with minimal or no modification. PBIRS adds Power BI interactive report hosting, DAX data models, and DirectQuery support.
SSRS 2022 is the final standalone SSRS release. Starting with SQL Server 2025, Microsoft has consolidated all on-premises reporting under Power BI Report Server:
Organizations should plan PBIRS migration timelines. For details, see 2025/SKILL.md.
| Tool | Use Case |
|------|----------|
| rs.exe | VB.NET scripted deployment and administration |
| ReportingServicesTools (PowerShell) | 40+ cmdlets for report/data source/subscription management |
| REST API v2.0 | Programmatic CRUD for catalog items |
| SSDT / Visual Studio | Project-based development with source control |
| Report Builder | End-user ad-hoc report creation |
.rdl, .rds, .rsd files in GitReportingServicesTools or REST API in CD pipelineSSRS uses a two-level role system:
Assign roles to Active Directory groups (not individual users). Organize reports into folders by department and apply security at the folder level. Reports inherit parent folder permissions by default.
SSRS has no built-in row-level security. Implement via query-based filtering using the User!UserID built-in field:
WHERE ManagerID = @UserID
Always configure HTTPS for both the Report Server web service and web portal. SSL must be configured in two places via Reporting Services Configuration Manager. TLS 1.3 is supported in SSRS 2022.
Reports can be rendered and controlled via URL parameters:
http://<server>/ReportServer?/<folder>/<report>&rs:Format=PDF&Year=2024
rs: prefix -- Report Server parameters (rs:Format, rs:Command)rc: prefix -- HTML Viewer parameters (rc:Toolbar, rc:Parameters)&Year=2024&Region=West)| Anti-Pattern | Why It Fails | Better Approach |
|---|---|---|
| Subreports in detail rows | N+1 query execution; one query per row | Use JOINs, lookups, or shared datasets |
| No execution timeout | Runaway queries consume all server resources | Always set report and query timeouts |
| SELECT * in datasets | Retrieves unnecessary columns, wastes memory | Select only needed columns |
| Report-level filtering on large datasets | Full dataset transferred then filtered client-side | Filter in the SQL WHERE clause |
| Embedded images everywhere | Inflates RDL size, increases memory per execution | Use external/URL-based images |
| Ignoring ExecutionLog3 | Performance problems go undetected | Query ExecutionLog3 regularly for slow/failed reports |
| Single service account for everything | Over-privileged, audit trail unclear | Dedicated service accounts per environment |
| No encryption key backup | Lost key = irrecoverable encrypted credentials | Back up encryption key after every service account change |
| Version | Route To | Key Delta |
|---|---|---|
| SSRS 2019 | 2019/SKILL.md | Azure AD Application Proxy, accessibility improvements |
| SSRS 2022 | 2022/SKILL.md | Angular portal, TLS 1.3, mobile reports removed, final standalone release |
| SQL Server 2025 / PBIRS | 2025/SKILL.md | SSRS replaced by PBIRS, migration guidance, licensing changes |
references/architecture.md -- Server components, RDL deep dive, data sources, rendering pipeline, subscriptions, deployment topology, configuration filesreferences/best-practices.md -- Report design, parameter patterns, performance optimization, subscription management, security, CI/CDreferences/diagnostics.md -- ExecutionLog3 queries, common errors, subscription failures, timeout analysis, configuration diagnostics, migration troubleshootingskills/analytics/SKILL.mdskills/database/sql-server/SKILL.md (database engine powering SSRS data sources and catalog)development
Top-level routing agent for ALL backend web framework and REST API technologies. Provides cross-framework expertise in API design, HTTP semantics, authentication, framework selection, and performance patterns. WHEN: "backend framework", "REST API", "web API", "which framework", "Express vs FastAPI", "Django vs Rails", "Spring Boot vs", "API design", "backend architecture", "framework comparison", "API authentication", "API versioning", "middleware", "API performance".
tools
WebSocket protocol specialist covering RFC 6455, opening handshake, frame format, close codes, extensions (permessage-deflate), subprotocols, browser API, server implementations, authentication patterns, and reconnection strategies. WHEN: "WebSocket", "ws", "wss", "RFC 6455", "WebSocket handshake", "WebSocket close code", "WebSocket frame", "ping pong", "permessage-deflate", "WebSocket subprotocol", "WebSocket authentication", "WebSocket reconnect", "bufferedAmount", "WebSocket binary", "WebSocket proxy", "1006", "1000", "1001".
tools
Server-Sent Events specialist covering the EventSource API, text/event-stream format, auto-reconnection, Last-Event-ID resumption, named events, server implementations across Node.js/Python/Go/.NET/Rust, LLM streaming patterns, and infrastructure configuration. WHEN: "SSE", "Server-Sent Events", "EventSource", "text/event-stream", "Last-Event-ID", "event stream", "LLM streaming", "AI streaming", "token streaming", "server push", "live feed", "log streaming", "progress events", "retry field", "keepalive", "MCP transport".
development
Socket.IO 4.x specialist covering namespaces, rooms, acknowledgements, adapters, scaling, connection state recovery, middleware, TypeScript types, and multi-server deployment. WHEN: "Socket.IO", "socket.io", "rooms", "namespaces", "Socket.IO adapter", "Redis adapter", "Socket.IO scaling", "Socket.IO middleware", "Socket.IO authentication", "Engine.IO", "Socket.IO reconnect", "emitWithAck", "Socket.IO admin", "connection state recovery", "volatile emit", "Socket.IO TypeScript".