-
Notifications
You must be signed in to change notification settings - Fork 226
Troubleshooting Report Server
This guide covers diagnostic techniques for troubleshooting Power BI Report Server (PBIRS) and SQL Server Reporting Services (SSRS). It explains how to retrieve log file locations, analyze log content, and query Windows event logs for error information.
Note
The examples in this guide use the instance name 'PBIRS' for Power BI
Report Server. If you are using SQL Server Reporting Services or have a
custom instance name, substitute 'PBIRS' with your instance name (e.g.,
'SSRS' or your custom name).
Report servers store log files in the ErrorDumpDirectory configured during
setup. This folder contains service logs, portal logs, and memory dumps that
are useful for diagnosing issues.
Note
For comprehensive information about all available Reporting Services log files and sources (including execution logs, trace logs, HTTP logs, and performance logs), see Reporting Services log files and sources. For detailed information about trace log configuration and content, see Report Server Service Trace Log.
Use the Get-SqlDscRSLogPath command to retrieve the log folder path:
Get-SqlDscRSLogPath -InstanceName 'PBIRS'Alternatively, pipe a configuration object from Get-SqlDscRSConfiguration:
Get-SqlDscRSConfiguration -InstanceName 'PBIRS' | Get-SqlDscRSLogPathThe log folder typically contains these file types:
-
ReportingServicesService*.log- Web service activity and error logs -
RSPortal*.log- Portal access and activity logs -
SQLDumpr*.mdmp- Memory dumps for crash analysis
To list all files in the log folder with their sizes and timestamps:
$logPath = Get-SqlDscRSLogPath -InstanceName 'PBIRS'
Get-ChildItem -Path $logPath -Recurse -File |
Select-Object -Property FullName, Length, LastWriteTimeTo filter for only .log files:
$logPath = Get-SqlDscRSLogPath -InstanceName 'PBIRS'
Get-ChildItem -Path $logPath -Recurse -File -Filter '*.log' |
Select-Object -Property FullName, Length, LastWriteTimeTo read the last 50 lines from the most recent service log:
$logPath = Get-SqlDscRSLogPath -InstanceName 'PBIRS'
Get-ChildItem -Path $logPath -Filter 'ReportingServicesService*.log' |
Sort-Object -Property LastWriteTime -Descending |
Select-Object -First 1 |
ForEach-Object -Process { Get-Content -Path $_.FullName -Tail 50 }To read from all log files:
$logPath = Get-SqlDscRSLogPath -InstanceName 'PBIRS'
Get-ChildItem -Path $logPath -Filter '*.log' -Recurse | ForEach-Object -Process {
Write-Host "--- $($_.Name) ---" -ForegroundColor Cyan
Get-Content -Path $_.FullName -Tail 50
Write-Host "--- End of $($_.Name) ---" -ForegroundColor Cyan
}Report server components write events to the Windows Application log. Querying these events can reveal errors not captured in the file-based logs.
When filtering events, look for these provider names:
-
Report Server Windows Service (SSRS)- Core report server service events -
RSInstallerEventLog- Installation and configuration events -
MSSQL$<InstanceName>- Database engine events (e.g.,MSSQL$PBIRS) -
SQLAgent$<InstanceName>- SQL Agent events if subscriptions are used
To retrieve the last 50 error events from the Application log:
Get-WinEvent -LogName 'Application' -MaxEvents 50 -FilterXPath '*[System[Level=2]]' |
ForEach-Object -Process {
"[$($_.TimeCreated)] [$($_.ProviderName)] $($_.Message)"
}To filter for report server-specific providers:
$providers = @(
'Report Server Windows Service (SSRS)'
'RSInstallerEventLog'
)
Get-WinEvent -LogName 'Application' -MaxEvents 100 |
Where-Object -FilterScript { $_.ProviderName -in $providers } |
ForEach-Object -Process {
"[$($_.TimeCreated)] [$($_.LevelDisplayName)] $($_.Message)"
}To see which providers have written recent events (useful for identifying the correct provider name for your environment):
Get-WinEvent -LogName 'Application' -MaxEvents 200 |
Select-Object -ExpandProperty ProviderName -Unique |
Sort-ObjectThe following script combines all diagnostic techniques into a single output for troubleshooting:
$instanceName = 'PBIRS'
$logPath = Get-SqlDscRSLogPath -InstanceName $instanceName -ErrorAction 'Stop'
Write-Host "Log path: $logPath" -ForegroundColor Green
if (Test-Path -Path $logPath)
{
$allFiles = Get-ChildItem -Path $logPath -Recurse -File -ErrorAction 'SilentlyContinue'
Write-Host "`nFiles in log folder ($($allFiles.Count) files):" -ForegroundColor Cyan
foreach ($file in $allFiles)
{
Write-Host " $($file.FullName) (Size: $($file.Length) bytes, Modified: $($file.LastWriteTime))"
}
# Output last 50 lines of each .log file
$logFiles = $allFiles | Where-Object -FilterScript { $_.Extension -eq '.log' }
foreach ($logFile in $logFiles)
{
Write-Host "`n--- Last 50 lines of $($logFile.Name) ---" -ForegroundColor Yellow
Get-Content -Path $logFile.FullName -Tail 50 -ErrorAction 'SilentlyContinue'
Write-Host "--- End of $($logFile.Name) ---" -ForegroundColor Yellow
}
}
else
{
Write-Warning -Message "Log path does not exist: $logPath"
}
Write-Host "`n--- Last 50 Application log error events ---" -ForegroundColor Magenta
$events = Get-WinEvent -LogName 'Application' -MaxEvents 50 -FilterXPath '*[System[Level=2]]' -ErrorAction 'SilentlyContinue'
foreach ($event in $events)
{
Write-Host "[$($event.TimeCreated)] [$($event.ProviderName)] $($event.Message)"
}
Write-Host "--- End of Application log error events ---" -ForegroundColor MagentaTip
Save this script to a file and run it when troubleshooting report server
issues. Redirect output to a file using > diagnostic-output.txt to share
with support teams.
- Add-SqlDscFileGroup
- Add-SqlDscNode
- Add-SqlDscRSSslCertificateBinding
- Add-SqlDscRSUrlReservation
- Add-SqlDscTraceFlag
- Assert-SqlDscAgentOperator
- Assert-SqlDscLogin
- Backup-SqlDscDatabase
- Backup-SqlDscRSEncryptionKey
- Complete-SqlDscFailoverCluster
- Complete-SqlDscImage
- Connect-SqlDscDatabaseEngine
- ConvertFrom-SqlDscDatabasePermission
- ConvertFrom-SqlDscServerPermission
- ConvertTo-SqlDscDatabasePermission
- ConvertTo-SqlDscDataFile
- ConvertTo-SqlDscEditionName
- ConvertTo-SqlDscFileGroup
- ConvertTo-SqlDscServerPermission
- Deny-SqlDscServerPermission
- Disable-SqlDscAgentOperator
- Disable-SqlDscAudit
- Disable-SqlDscDatabaseSnapshotIsolation
- Disable-SqlDscLogin
- Disable-SqlDscRsSecureConnection
- Disconnect-SqlDscDatabaseEngine
- Enable-SqlDscAgentOperator
- Enable-SqlDscAudit
- Enable-SqlDscDatabaseSnapshotIsolation
- Enable-SqlDscLogin
- Enable-SqlDscRsSecureConnection
- Get-SqlDscAgentAlert
- Get-SqlDscAgentOperator
- Get-SqlDscAudit
- Get-SqlDscBackupFileList
- Get-SqlDscCompatibilityLevel
- Get-SqlDscConfigurationOption
- Get-SqlDscDatabase
- Get-SqlDscDatabasePermission
- Get-SqlDscDateTime
- Get-SqlDscInstalledInstance
- Get-SqlDscLogin
- Get-SqlDscManagedComputer
- Get-SqlDscManagedComputerInstance
- Get-SqlDscManagedComputerService
- Get-SqlDscPreferredModule
- Get-SqlDscRole
- Get-SqlDscRSConfigFile
- Get-SqlDscRSConfiguration
- Get-SqlDscRSDatabaseInstallation
- Get-SqlDscRSExecutionLog
- Get-SqlDscRSIPAddress
- Get-SqlDscRSLogPath
- Get-SqlDscRSPackage
- Get-SqlDscRSServiceAccount
- Get-SqlDscRSSetupConfiguration
- Get-SqlDscRSSslCertificate
- Get-SqlDscRSSslCertificateBinding
- Get-SqlDscRSUrl
- Get-SqlDscRSUrlReservation
- Get-SqlDscRSVersion
- Get-SqlDscRSWebPortalApplicationName
- Get-SqlDscServerPermission
- Get-SqlDscServerProtocol
- Get-SqlDscServerProtocolName
- Get-SqlDscServerProtocolTcpIp
- Get-SqlDscSetupLog
- Get-SqlDscStartupParameter
- Get-SqlDscTraceFlag
- Grant-SqlDscServerPermission
- Import-SqlDscPreferredModule
- Initialize-SqlDscFailoverCluster
- Initialize-SqlDscImage
- Initialize-SqlDscRebuildDatabase
- Initialize-SqlDscRS
- Install-SqlDscFailoverCluster
- Install-SqlDscPowerBIReportServer
- Install-SqlDscReportingService
- Install-SqlDscServer
- Invoke-SqlDscQuery
- Invoke-SqlDscScalarQuery
- New-SqlDscAgentAlert
- New-SqlDscAgentOperator
- New-SqlDscAudit
- New-SqlDscDatabase
- New-SqlDscDatabaseSnapshot
- New-SqlDscDataFile
- New-SqlDscFileGroup
- New-SqlDscLogin
- New-SqlDscRole
- New-SqlDscRSEncryptionKey
- Remove-SqlDscAgentAlert
- Remove-SqlDscAgentOperator
- Remove-SqlDscAudit
- Remove-SqlDscDatabase
- Remove-SqlDscLogin
- Remove-SqlDscNode
- Remove-SqlDscRole
- Remove-SqlDscRSEncryptedInformation
- Remove-SqlDscRSEncryptionKey
- Remove-SqlDscRSSslCertificateBinding
- Remove-SqlDscRSUnattendedExecutionAccount
- Remove-SqlDscRSUrlReservation
- Remove-SqlDscTraceFlag
- Repair-SqlDscPowerBIReportServer
- Repair-SqlDscReportingService
- Repair-SqlDscServer
- Request-SqlDscRSDatabaseRightsScript
- Request-SqlDscRSDatabaseScript
- Request-SqlDscRSDatabaseUpgradeScript
- Restart-SqlDscRSService
- Restore-SqlDscDatabase
- Restore-SqlDscRSEncryptionKey
- Resume-SqlDscDatabase
- Revoke-SqlDscServerPermission
- Save-SqlDscSqlServerMediaFile
- Set-SqlDscAgentAlert
- Set-SqlDscAgentOperator
- Set-SqlDscAudit
- Set-SqlDscConfigurationOption
- Set-SqlDscDatabaseDefault
- Set-SqlDscDatabaseOwner
- Set-SqlDscDatabasePermission
- Set-SqlDscDatabaseProperty
- Set-SqlDscRSDatabaseConnection
- Set-SqlDscRSDatabaseTimeout
- Set-SqlDscRSServiceAccount
- Set-SqlDscRSSmtpConfiguration
- Set-SqlDscRSSslCertificateBinding
- Set-SqlDscRSUnattendedExecutionAccount
- Set-SqlDscRSUrlReservation
- Set-SqlDscRSVirtualDirectory
- Set-SqlDscServerPermission
- Set-SqlDscStartupParameter
- Set-SqlDscTraceFlag
- Start-SqlDscRSWebService
- Start-SqlDscRSWindowsService
- Stop-SqlDscRSWebService
- Stop-SqlDscRSWindowsService
- Suspend-SqlDscDatabase
- Test-SqlDscAgentAlertProperty
- Test-SqlDscBackupFile
- Test-SqlDscConfigurationOption
- Test-SqlDscDatabaseProperty
- Test-SqlDscIsAgentAlert
- Test-SqlDscIsAgentOperator
- Test-SqlDscIsDatabase
- Test-SqlDscIsDatabasePrincipal
- Test-SqlDscIsLogin
- Test-SqlDscIsLoginEnabled
- Test-SqlDscIsRole
- Test-SqlDscIsSupportedFeature
- Test-SqlDscRSAccessible
- Test-SqlDscRSInitialized
- Test-SqlDscRSInstalled
- Test-SqlDscServerPermission
- Uninstall-SqlDscPowerBIReportServer
- Uninstall-SqlDscReportingService
- Uninstall-SqlDscServer
- Update-SqlDscServer
- Update-SqlDscServerEdition
- Change Report Server Service Account
- Deploy Power BI Report Server
- Setting up a SQL Server AlwaysOn Availability Groups
- Setting up a SQL Server Failover Cluster
- Troubleshooting Report Server
- SqlAG
- SqlAGDatabase
- SqlAgentAlert
- SqlAgentFailsafe
- SqlAgentOperator
- SqlAGListener
- SqlAGReplica
- SqlAlias
- SqlAlwaysOnService
- SqlAudit
- SqlConfiguration
- SqlDatabase
- SqlDatabaseDefaultLocation
- SqlDatabaseMail
- SqlDatabaseObjectPermission
- SqlDatabasePermission
- SqlDatabaseRole
- SqlDatabaseUser
- SqlEndpoint
- SqlEndpointPermission
- SqlLogin
- SqlMaxDop
- SqlMemory
- SqlPermission
- SqlProtocol
- SqlProtocolTcpIp
- SqlReplication
- SqlRole
- SqlRS
- SqlRSSetup
- SqlScript
- SqlScriptQuery
- SqlSecureConnection
- SqlServiceAccount
- SqlSetup
- SqlTraceFlag
- SqlWaitForAG
- SqlWindowsFirewall