For Power BI Report Server, SQL Server database design best practices focus on using supported versions, separating roles, and optimizing for reporting workloads rather than custom schema changes to the ReportServer databases themselves.
Key practices:
- Use a supported SQL Server version
Host the Power BI Report Server databases on a supported SQL Server Database Engine version, such as:
- Azure SQL Managed Instance (for PBIRS January 2020 and later)
- SQL Server 2025, 2022, 2019, 2017, 2016, or 2014 SP3
Ensure the instance is available before configuring the report server database.
When using a remote SQL Server instance, configure the connection with a domain user or service account that has network access and permissions to create and access the report server databases.
- Separate Report Server and application workloads
For scalability and performance, follow a topology similar to the documented capacity-planning setup:
- One machine for SQL Server Database Engine and SQL Server Analysis Services (for report data sources).
- One machine for Power BI Report Server.
- One separate machine for the Power BI Report Server database (ReportServer/ReportServerTempDB) so it does not compete with the main SQL Server Database Engine workload for CPU, memory, network, and disk.
This separation helps isolate reporting metadata and temporary objects from core transactional or analytical workloads.
- Do not customize the ReportServer schema
Treat the ReportServer and ReportServerTempDB databases as system databases managed by the product. Avoid:
- Adding or modifying tables, views, or stored procedures in these databases.
- Creating foreign keys or triggers that could interfere with upgrades or performance.
All customization should be done in source systems or semantic models, not in the PBIRS catalog databases.
- Optimize source databases for reporting
Since Power BI Report Server reports often query relational sources directly (import or DirectQuery), design those databases for analytic workloads:
- Ensure data integrity with proper dimension keys and fact table relationships so models and reports can use efficient joins.
- Add appropriate indexes on tables or views to support expected filtering and grouping patterns.
- For high-volume or MPP sources (like Azure Synapse Analytics), use suitable distribution strategies (hash-distributed fact tables, replicated dimensions).
- Materialize important transformations using computed columns, indexed views, and a dedicated date table to support time-based filtering.
These practices improve query performance for both DirectQuery models and paginated reports.
- Use supported data sources and refresh patterns
When designing databases that will be used as data sources for Power BI reports hosted in PBIRS:
- Prefer supported relational and analytic sources such as SQL Server Database, Azure SQL Database, SQL Server Analysis Services, and Azure Synapse Analytics.
- Ensure that all data sources used by Power BI Desktop reports support scheduled refresh, as required by PBIRS.
- For paginated reports, consider using stored procedures for data retrieval to improve maintainability and performance.
- Security and connectivity considerations
- Use domain or service accounts with least-privilege access for the PBIRS connection to SQL Server.
- Ensure the account running Reporting Services Configuration Manager has permissions to create and manage the report server databases.
- Plan network topology so that PBIRS and SQL Server communicate over reliable, low-latency connections.
These practices together provide a robust, supportable SQL Server database design for Power BI Report Server deployments, focusing on supported versions, separation of roles, and optimization of the underlying data sources used by reports.
References: