SCCM报告返回服务器上的KB状态

时间:2016-12-29 22:34:27

标签: sql-server tsql ssrs-2008 sccm

我正在尝试在SCCM中创建一个自定义报告,它会告诉我服务器池上是否安装了特定的KB,并返回二进制答案(在这种情况下,是或否)。

我遇到的问题是我无法让它返回只有一KB的状态。我正在运行这个:

SELECT
 SYS.Name0 'Computer',
 SYS.operatingSystem0 'OS',
 UIN.Title 'Update',
 CASE
  WHEN UIN.Title LIKE '%KB3092627%' THEN 'Yes'
  ELSE 'No'
  END 'KB Installed'

FROM v_R_System SYS
 INNER JOIN v_UpdateComplianceStatus UCS ON SYS.ResourceID = UCS.ResourceID
 INNER JOIN v_UpdateInfo UIN ON UCS.CI_ID = UIN.CI_ID

WHERE SYS.operatingSystem0 LIKE '%Server 2008%'

ORDER BY SYS.Name0

但是我为每个SYS.Name0获得了数百个结果,每个检测到的更新一个。所有不属于所需知识库的更新记录的'No'值为KB Installed,但仍会列出。我试过SELECT DISTINCT看看它是否给我不同的结果,但事实并非如此。

我想要的是确定KB是否存在,如果是,则返回。我觉得我甚至没有用这个代码询问“是否已安装”的基本问题,但我想不出以不同方式提出这个问题的方法。这是我应该在报表生成器而不是查询中做的事情吗?

2 个答案:

答案 0 :(得分:0)

免责声明:我没有在代表性数据集上对此进行测试,因为您没有提供,但我认为这应该是您应该尝试实现的目标:

SELECT DISTINCT
    s1.Name0 'Computer',
    s1.operatingSystem0 'OS',
    CASE WHEN matches.Computer IS NULL THEN 'No' ELSE 'Yes' END 'KB Installed'
FROM v_R_System s1
LEFT JOIN
(
    SELECT s2.Name0 'Computer',
    FROM v_R_System s2
    INNER JOIN v_UpdateComplianceStatus UCS ON s2.ResourceID = UCS.ResourceID
    INNER JOIN v_UpdateInfo UIN ON UCS.CI_ID = UIN.CI_ID
    WHERE UIN.Title LIKE '%KB3092627%'
) AS matches ON s1.Name0 = matches.Computer
WHERE s1.operatingSystem0 LIKE '%Server 2008%'
ORDER BY s1.Name0

因此,这有效地将所有计算机和LEFT JOIN的不同列表返回到每个给定计算机的有问题更新的结果集。因此,当LEFT JOIN返回的字段为NULL时,更新尚未安装,反之亦然。

为了回答你的问题,我个人认为在查询中这样做是对的(而不是以某种方式在你的报告中) - 这就是我要做的事情。

答案 1 :(得分:0)

请在下面运行此查询:

SELECT DISTINCT 
 SYS.Name0 'Computer',
 SYS.Operating_System_Name_and0 'OS',
 UIN.Title 'Update',
 CASE
  WHEN UIN.Title LIKE '%KB3079343%' THEN 'Yes'
  ELSE 'No'
  END 'KB Installed'

FROM v_R_System SYS
 left JOIN v_UpdateComplianceStatus UCS ON SYS.ResourceID = UCS.ResourceID
 left JOIN v_UpdateInfo UIN ON UCS.CI_ID = UIN.CI_ID

WHERE  UIN.Title LIKE '%KB3079343%'


ORDER BY SYS.Name0

在我的测试实验室中,有多个记录对应一个KB编号。这种方法可能不是一个完美的解决方案。 enter image description here

您可以尝试内置报告: \ Monitoring \ Overview \ Reporting \ Reports \ Software Updates - A Compliance \ 合规性8 - 处于特定合规状态的计算机进行更新(次要)