积极答复者
SCCM报表漏项的问题,求解

问题
-
经过几个月的测试我发现SCCM的报表漏项很常见,也许是我SQL太菜....
集合中100台收集了完整数据的主机,在我自定义的报表中总是只有90台左右
主要发现的问题如下
比如:
有3个30岁的人A,B,C
A"工作"="教师"
B"工作"=null
C"工作"="警察"
如果这么查询 "年纪"="年纪"则返回 "工作" 即inner join v_GS_X86_PC_MEMORY on (v_GS_X86_PC_MEMORY.ResourceID = v_R_System_Valid.ResourceID)
这种的
这个查询结果中就不会出现B"工作" = null 的. 有无办法让null的不成漏项?
还有物理内存换算成GB的时候也特别容易造成报表结果漏项.
答案
-
lz 该补补SQL。
null 不等于任何东西,null 甚至不等于null。 操作null值时,要用 is null 或者 is not null 来判断。
内存换算成GB时是什么样的问题你没说。可能的原因就是几个:
1。 KB 换算到MB,GB 要除1024
2。 集成显卡使用物理内存做显存造成的内存减少 --- 这种情况 对于SCCM来说无解,因为做显存这部分内存在OS启动前BIOS 加载时就已经被占用了, OS 只能看到剩下的物理内存,所以 SCCM client的 inventory 也只能看到剩下的物理内存。对很多集成显卡来说,具体占用多少物理内存做显存还会根据情况变化,所以没什么好办法。 顶多就是你对公司里机器硬件比较熟,知道都用那些显卡,对使用了物理内存做显存的机器,做SQL的时候通过条件判断把这部分物理内存再加回去。
如果一定要 使用内存容量 > 2048MB 这样的判断条件,必然有一些机器会不满足。偷懒就根据情况改成 内存容量 > 1950MB 好了,反正内存都是2的整数倍增加,不会真的有1950MB的。 使用物理内存做显存,不会占用超过64MB的。
- 已标记为答案 FrankGuanModerator 2010年11月26日 2:51
全部回复
-
lz 该补补SQL。
null 不等于任何东西,null 甚至不等于null。 操作null值时,要用 is null 或者 is not null 来判断。
内存换算成GB时是什么样的问题你没说。可能的原因就是几个:
1。 KB 换算到MB,GB 要除1024
2。 集成显卡使用物理内存做显存造成的内存减少 --- 这种情况 对于SCCM来说无解,因为做显存这部分内存在OS启动前BIOS 加载时就已经被占用了, OS 只能看到剩下的物理内存,所以 SCCM client的 inventory 也只能看到剩下的物理内存。对很多集成显卡来说,具体占用多少物理内存做显存还会根据情况变化,所以没什么好办法。 顶多就是你对公司里机器硬件比较熟,知道都用那些显卡,对使用了物理内存做显存的机器,做SQL的时候通过条件判断把这部分物理内存再加回去。
如果一定要 使用内存容量 > 2048MB 这样的判断条件,必然有一些机器会不满足。偷懒就根据情况改成 内存容量 > 1950MB 好了,反正内存都是2的整数倍增加,不会真的有1950MB的。 使用物理内存做显存,不会占用超过64MB的。
- 已标记为答案 FrankGuanModerator 2010年11月26日 2:51