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

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

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控制台(monitoring\Overview\Reporting\Reports\*)运行某些报告时会出现下面截图中的错误:

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

原因:

正如字面意思,出现这个错误是由于你当前运行的这个报告,在做数据库查询时,遇到表中某些值包含非法字符。而字符值就是上面***标记中,开头""包含部分,转换为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。

时间: 2024-10-22 13:15:55

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

hive运行query语句时提示错误:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.io.IOException:

hive> select product_id, track_time from trackinfo limit 5; Total MapReduce jobs = 1 Launching Job 1 out of 1 Number of reduce tasks is set to 0 since there's no reduce operator org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.io.IOEx

通过RDC访问内网电脑时提示“出现身份验证错误。要求的函数不受支持 这可能是由于CredSSP加密”

通过RDC访问内网电脑时提示"出现身份验证错误.要求的函数不受支持 这可能是由于CredSSP加密" ?Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者博客:https://blog.51cto.com/lander IT Helpdesk 工程师实战培训课程:https://edu.51cto.com/lecturer/733218.html轻松进外企:IT Helpdesk工程师实战自学之路:https://blog.51cto.c

Python3.4 解释一段程序时提示SyntaxError: invalid syntax错误

问题描述: 我用的Python版本是3.4. 这里是一段程序及解释结果: 提示错误: SyntaxError:invalid syntax . 其实这句话的意思就是"语法错误:不正确的语法". 所以就很明白了,这几句代码不符合语法规范. 但是有些人可能觉着奇怪,明明是教程上原封不动拷过来的代码,怎么会语法错误? 原因在于:这段代码符合的语法规范是Python2.7的,而我使用的版本是3.4的.Python3.4的语法规范和2.7是有区别的.就本段代码而言,区别在于:3.4中print后

linux安装时提示发生不正常错误问题

在安装CentOS时 提示 找不到磁盘,是否安装磁盘程序,选择安装进行"下一步" 提示: 发生不规则,不正常错误 原因:没找到安装的磁盘 看来一下是自己设置虚拟机的时候设置的是磁盘格式是SCSI格式, 选择安装下一步后出现上面的提示 后来重新设置了一块磁盘未IDE格式安装正确 难道是因为SCSI格式 和本地机子的物理磁盘格式不匹配吗?暂时没有追究

修复运行 tasklist 命令时提示 ERROR: Not found

最近碰到了一个脚本运行 tasklist 总是提示 ERROR: Not found,在这里找到了修复的方法 https://superuser.com/questions/1282867/windows-8-1-tasklist-error-not-found 方法是在命令行运行以下命令 cd \windows\system32\wbem net stop winmgmt rename Repository Repository.old net start winmgmt tasklist #

安装PIL库时提示python未注册错误(自定义python安装路径)

1 import sys 2 3 from _winreg import * 4 5 # tweak as necessary 6 version = sys.version[:3] 7 installpath = sys.prefix 8 regpath = "SOFTWARE\Python\Pythoncore\%s\\" % (version) 9 installkey = "InstallPath" 10 pythonkey = "PythonPa

联想lenovo 家用电脑安装win7 无法引导问题(新电脑安装系统时提示File:\Boot\BCD错误解决方案)

安装方式 : 1.进入 PE 2.用 EasyimageX 恢复 GHO镜像 3.重启后出现  原因: 主要 是安装win7 时,格式 化选择为GUID模式. 处理: win7 以后,格式华时选择MBR安装 win8 以上,可以格式 化为GUID 原文地址:https://www.cnblogs.com/sjdn/p/11044565.html

VS Code 运行 JavaScript 文件时出现“node...”乱码或错误

1.乱码图片: 2.如果是中文乱码的话,可以到设置里边把「Auto Guess Encoding」这一项勾起来. 3.如果不是这个原因,可能是因为没安装 Node.js 和配置 Node.js 环境,我就是这样子解决乱码问题的.在 windows 下安装和配置 Node.js 环境的教程可见:Node.js安装及环境配置(完整) 希望你的问题能够得到解决. 原文地址:https://www.cnblogs.com/lonelyWMW/p/11680043.html

在linux下运行apt-get update 时,报错/var/lib/apt/lists/lock

在运行apt-get update 时,报下面的错误: E: 无法获得锁 /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)E: 无法对目录 /var/lib/apt/lists/ 加锁 这个问题是的意思是用于apt-get操作时的lock(应该是用于互斥的锁),出现了不能够得到锁的问题,针对此问题,如何解决呢? 可以以下命令进行操作, sudo rm /var/lib/apt/lists/lock sudo