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

将 添加到 *.* 授权扩展列表中。 为此,请按照下列步骤操作:

  1. 启动SQL Server Management Studio,然后连接到 Operations Manager 使用的报表服务器实例。
  2. 右键单击报表服务器实例名称,选择“ 属性”,然后选择“ 高级”。
  3. 找到 AllowedResourceExtensionsForUpload 设置,将 添加到 *.* 扩展列表,然后选择“ 确定”。
  4. 重启 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 到报表服务。 脚本中的扩展列表可能并不详尽。 根据需要包括你自己的扩展。