加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SCCM 在运行某些报告时提示如下格式的错误

发布时间:2020-12-16 08:45:16 所属栏目:百科 来源:网络整理
导读:650) this.width=650;" align="left" src="http://img.jb51.cc/vcimg/static/loading.png" alt="" src="http://s3.51cto.com/wyfs02/M02/79/FB/wKiom1afrBOBYnAeAAAWj13EPe0194.png"> 在运行某些报告时提示如下格式的错误 Error in XML document. Hexadecima




在运行某些报告时提示如下格式的错误

Error in XML document. Hexadecimal value 0x0C,is an invalid character


Manager

SCCMR2 Version 5.0.7958.1203

SQL Version 2012R2 11.0.3000.0

Operating System6.3.9600




故障现象:

在SCCM控制台(monitoringOverviewReportingReports*)运行某些报告时会出现下面截图中的错误:

查看详细信息,内容如下:









原因:

正如字面意思,出现这个错误是由于你当前运行的这个报告,在做数据库查询时,遇到表中某些值包含非法字符。而字符值就是上面***标记中,开头""包含部分,转换为16进制后的值是0x0C。这些值无发被正确的识别,所以出现报告无法继续运行的错误。

造成这种错误的情况,在SCCM上主要是"资产智能"这个功能导致,出现最多的是在软件数据的收集上,由于某些软件设计不规范导致的,至于微软为什么让这些字符写入到数据库,我就无法解释了,而且这样还会导致安全隐患。

解决方案:

虽然知道了问题的原因,我该如何解决?

首先,我们知道是表中的值出现非法字符,那么一定找出这个值,修改或者删除它即可,思路如下:找出报告中涉及的表à找出表中出问题的值à修改或者删除非法的值

A 找出报告涉及的表格

可以通过ReportBuilder工具,查看报告的数据源,找出对应的视图,然后通过视图找出涉及的表。

通过WEB方式,访问SCCM的报表点,这个报告点取决于你的部署。我的报告点就是我的SCCM服务器。

打开Report Builder(如过你打开后不能看到上图中的内容,那么请你先解决这个问题再继续),在ReportBuilder里面打开出现错误的报告。我这里是Software 01A

我们会看到DataSets,这里面配置了这个报告所需要的所有查询语句,我们可以通过查看DataSets的配置,找出报告引用的视图。打开每个DataSet的属性。

打开Query Designer

把Query中间的语句复制到记事本中,注意下图中标黄的语句,这些语句就是这个报告所涉及的视图,根据报告的不同可以会涉及很多个视图。如过有多个DataSet那么可以分析那个是最有可能的,例如我现在用的这个报告,是根据指定的集合和指定的发布者显示安装数量和版本信息。那么DataSet0根据名称判断就是已经安装软件的视图。而Dataset1主要是集合ID的查询,如过集合ID出现问题,那么方式要用到集合的报告都会出问题,根据排除法集合ID的表格是没有问题的,而且集合信息本身是在SCCM中生成,肯定是符合规范的。对于Dataset2是用户SID这个就更不用去查了。

那么我将注意力集中到v_GS_INSTALLED_SOFTWARE

这个视图上。

通过SQL Management Studio打开SCCM数据库,找到这个视图:

点击右键,选择Design

通过Design我们可以看到这个视图引用了哪些表

注意黄线部分就是这个视图引用的数据库中的表。

B 查询出问题的数据

找到表了,我们的工作已经完成一半了,找到对应的表,查询错误的值:

通过如下语句:

SelectPublisher00,*

from [CM_TTY].[dbo].INSTALLED_SOFTWARE_DATA

WHERECONVERT(varchar(max),convert(varbinary(max),Publisher00),2)LIKE'%0C%'


注意%0C%就是错误中出现的值,以16进制形式表示,查询出来的值拷贝到Excel中如下图,会出现很多乱码,这些都是错误的数据。

C 删除错误数据

SQL 语句:

delete from [CM_TTY].[dbo].INSTALLED_SOFTWARE_DATA where InstanceKey='86' and MachineID='16777774'

根据表的主键,我们将错误的数据删除,建议大家将查询出来的数据都删除,即使看起来正常。



PS:

我的版本是SCCM 2012R2 ,论坛上有说升级到R2 SP1可以解决这个问题,有可能这个是SCCM的一个Bug。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读