dsccommunity / dsccommunity/SqlServerDsc
Class-based DSC resources for SQL Server Reporting Services and Power BI Report Server
Nobody has claimed this yet.
- Dominant language
- PowerShell
- Stars
- 385
- Forks
- 224
- PR merge metrics
- No merged PRs in 30d
Description
Overview
This is the tracking issue for creating new DSC class-based resources to replace the existing MOF-based SqlRS resource. The new resources will use the existing public commands (*-SqlDscRS*) that are already integration tested in our CI/CD pipeline.
Background
The existing MOF-based SqlRS resource (source/DSCResources/DSC_SqlRS) has become a monolithic resource that is hard to maintain. It handles database initialization, virtual directories, URL reservations, SSL configuration, and service restarts all in one resource.
We have created 45+ new public commands that can manage both SQL Server Reporting Services (SSRS) and Power BI Report Server (PBIRS). These commands are integration tested in the following CI/CD stages:
| Testing | Stage Names |
|---|---|
| Power BI Report Server | Integration_Test_Commands_BIReportServer_Secure, Integration_Test_Commands_BIReportServer |
| SQL Server Reporting Services | Integration_Test_Commands_ReportingServices |
Design Principles
- Single Responsibility - Each resource manages one aspect of configuration
- Composability - Resources can be used independently or together
- Idempotency - Resources correctly detect current state and only make necessary changes
- Support for SSRS and PBIRS - All resources work with both products
- SQL Server 2019+ - No support needed for SQL Server versions older than 2019
Proposed Resources
| Resource | Description | Sub-Issue |
|---|---|---|
| SqlRSDatabase | Configures the Reporting Services database connection, including creating the database and initializing the report server. | #2416 |
| SqlRSVirtualDirectory | Manages virtual directories for ReportServer web service and Reports web portal applications. | #2417 |
| SqlRSUrlReservation | Manages URL reservations for ReportServer web service and Reports web portal. | #2418 |
| SqlRSSslCertificateBinding | Manages SSL/TLS certificate bindings for Reporting Services applications. | #2419 |
| SqlRSServiceAccount | Manages the Windows service account with complete change workflow. | #2420 |
| SqlRSConfiguration | Manages optional configuration settings (SMTP, unattended execution account). | #2421 |
Resource Dependencies / Recommended Usage Order
1. SqlRSSetup - Install SSRS or PBIRS (already exists)
2. SqlRSVirtualDirectory - Configure virtual directories (before URL reservations)
3. SqlRSUrlReservation - Configure URL reservations
4. SqlRSDatabase - Create database and initialize
5. SqlRSSslCertificateBinding - Configure SSL/TLS (optional)
6. SqlRSServiceAccount - Change service account if needed (optional)
7. SqlRSConfiguration - Configure SMTP and unattended execution (optional)
Implementation Notes
- All resources inherit from
ResourceBase(from DscResource.Base module), notSqlResourceBasesince they don't interact with the SQL Server Database Engine via SMO. - Each resource needs a localization file at
source/en-US/{ResourceName}.strings.psd1 - Resources should follow the integration test patterns in
Integration_Test_Commands_ReportingServicesandIntegration_Test_Commands_BIReportServer
Migration Path
Users of the old SqlRS resource will need to:
- Replace
SqlRSwith a combination of the new resources - Map properties to the appropriate new resources:
DatabaseServerName,DatabaseInstanceName→SqlRSDatabaseReportServerVirtualDirectory,ReportsVirtualDirectory→SqlRSVirtualDirectoryReportServerReservedUrl,ReportsReservedUrl→SqlRSUrlReservationUseSsl→SqlRSSslCertificateBinding
Open Questions
- Should
SqlRSConfigurationbe split into separateSqlRSSmtpandSqlRSUnattendedExecutionAccountresources? - Should we create a
SqlRSEncryptionKeyresource for standalone encryption key management? - Should
SqlRSVirtualDirectoryandSqlRSUrlReservationbe combined into a singleSqlRSUrlresource? - Should we add a
SqlRSScaleOutresource for managing scale-out deployments?
Sub-Issues
- #2416 - SqlRSDatabase
- #2417 - SqlRSVirtualDirectory
- #2418 - SqlRSUrlReservation
- #2419 - SqlRSSslCertificateBinding
- #2420 - SqlRSServiceAccount
- #2421 - SqlRSConfiguration
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing MOF-based resource in source/DSCResources/DSC_SqlRS and the public -SqlDscRS commands used by Integration_Test_Commands_ReportingServices and Integration_Test_Commands_BIReportServer. Review the six linked sub-issues, ResourceBase guidance, and the required source/en-US/{ResourceName}.strings.psd1 files; done means the planned class-based resources cover their stated responsibilities and follow the integration-test patterns.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- powershell
- Domain
- devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100