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
任务类别: 数据仓库
级别:错误
关键字:经典
用户:无
计算机: <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
实例名称:数据仓库同步服务
实例 ID:{GUID}
管理组: <管理组名称>
注意
升级到 SSRS 2017 时,System Center Operations Manager 版本 1807 中也会出现此问题,然后删除并重新安装 Operations Manager 报告。
原因
SSRS 2017 版本 14.0.600.1274 及更高版本包括新的高级设置 AllowedResourceExtensionsForUpload。 此设置限制可上传到报表服务器的资源文件的扩展集。 出现此问题的原因是 Operations Manager 报表使用了 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
到报表服务。 脚本中的扩展列表可能并不详尽。 根据需要包括自己的扩展。