Operations Manager 报表无法部署
本文可帮助你解决部署 Operations Manager 报表失败并显示事件 ID 31567 的问题。
适用于: System Center Operations Manager
原始 KB 编号: 4519161
症状
将 System Center 2019 Operations Manager 与最新版本的 SQL Server Reporting Services (SSRS) 2017 一起安装时,Operations Manager 报表不会部署。
在操作控制台中打开 “报表” 视图并选择任何文件夹时,报表列表为空。 此外,Operations Manager 事件日志中会记录类似于以下内容的错误消息:
日志名称:Operations Manager
源:运行状况服务模块
日期: <日期><时间>
事件 ID:31567
任务类别:Data Warehouse
级别:错误
关键字:经典
用户:不适用
计算机: <FQDN>
说明:
无法将报表组件部署到SQL Server Reporting Services服务器。 将重试该操作。 异常“DeploymentException”:无法为版本依赖 ID 为“ID>”<的管理包部署报表。 System.Web.Services.Protocols.SoapException: 使用 上传或保存文件。不允许使用 CustomConfiguration 扩展。 如有任何问题,请与管理员联系。 --->
Microsoft.ReportingServices.Diagnostics.Utilities.ResourceFileFormatNotAllowedException:使用 上传或保存文件。不允许使用 CustomConfiguration 扩展。 如有任何问题,请与管理员联系。
at Microsoft.ReportingServices.Library.ReportingService2005Impl.CreateResource (String Resource、String Parent、Boolean Overwrite、Byte[] Contents、String MimeType、Property[] Properties、 Guid batchId)
at Microsoft.ReportingServices.WebServer.ReportingService2005.CreateResource (String Resource、String Parent、Boolean Overwrite、Byte[] Contents、String MimeType、Property[] Properties)
一个或多个工作流受此影响。
工作流名称:Microsoft.SystemCenter.DataWarehouse.Deployment.Report
实例名称:Data Warehouse同步服务
实例 ID: {GUID}
管理组: <管理组名称>
注意
升级到 SSRS 2017,然后删除并重新安装 Operations Manager 报告时,System Center Operations Manager 版本 1807 中也会出现此问题。
原因
SSRS 2017 版本 14.0.600.1274 及更高版本包括新的高级设置 AllowedResourceExtensionsForUpload。 此设置限制可上传到报表服务器的资源文件的扩展集。 出现此问题的原因是 Operations Manager Reporting 使用的扩展未包含在 AllowedResourceExtensionsForUpload 中的默认集中。
解决方法 1
将 添加到 *.*
授权扩展列表中。 为此,请按照下列步骤操作:
- 启动SQL Server Management Studio,然后连接到 Operations Manager 使用的报表服务器实例。
- 右键单击报表服务器实例名称,选择“ 属性”,然后选择“ 高级”。
- 找到 AllowedResourceExtensionsForUpload 设置,将 添加到
*.*
扩展列表,然后选择“ 确定”。 - 重启 SSRS。
解决方法 2
使用 PowerShell 脚本添加扩展。 为此,请运行以下 PowerShell 脚本:
注意
运行此脚本后,需要重启 SSRS。
$ServiceAddress = 'http://localhost'
$ExtensionAdd = @(
'*'
'CustomConfiguration'
'Report'
'AvailabilityMonitor'
'TopNApplications'
'Settings'
'License'
'ServiceLevelTrackingSummary'
'CustomPerformance'
'MostCommonEvents'
'PerformanceTop'
'Detail'
'DatabaseSettings'
'ServiceLevelObjectiveDetail'
'PerformanceDetail'
'ConfigurationChange'
'TopNErrorGroupsGrowth'
'AvailabilityTime'
'rpdl'
'mp'
'TopNErrorGroups'
'Downtime'
'TopNApplicationsGrowth'
'DisplayStrings'
'Space'
'Override'
'Performance'
'AlertDetail'
'ManagementPackODR'
'AlertsPerDay'
'EventTemplate'
'ManagementGroup'
'Alert'
'EventAnalysis'
'MostCommonAlerts'
'Availability'
'AlertLoggingLatency'
'PerformanceTopInstance'
'rdl'
'PerformanceBySystem'
'InstallUpdateScript'
'PerformanceByUtilization'
'DropScript'
)
Write-Output 'Setting Allowed Resource Extensions for Upload'
$error.clear()
try
{
$Uri = [System.Uri]"$ServiceAddress/ReportServer/ReportService2010.asmx"
$Proxy = New-WebServiceProxy -Uri $Uri -UseDefaultCredential
$Type = $Proxy.GetType().Namespace + '.Property'
$Property = New-Object -TypeName $Type
$Property.Name = 'AllowedResourceExtensionsForUpload'
$ValueAdd = $ExtensionAdd | ForEach-Object -Process {
"*.$psItem"
}
$Current = $Proxy.GetSystemProperties($Property)
if ($Current)
{
$ValueCurrent = $Current.Value -split ','
$ValueSet = $ValueCurrent + $ValueAdd | Sort-Object -Unique
}
else
{
$ValueSet = $ValueAdd | Sort-Object -Unique
}
$Property.Value = $ValueSet -join ','
$Proxy.SetSystemProperties($Property)
Write-Output ' Successfully set property to: *.*'
}
catch
{
Write-Warning "Failure occurred: $error"
}
Write-Output 'Script completed!'
注意
可能需要使用有效的 Web 地址将变量更新 $ServiceAddress
到报表服务。 脚本中的扩展列表可能并不详尽。 根据需要包括你自己的扩展。