Sql server 查询WSUS数据库以获取每台服务器所需的更新

Sql server 查询WSUS数据库以获取每台服务器所需的更新,sql-server,tsql,windows-update,Sql Server,Tsql,Windows Update,我在互联网上到处搜索,寻找一种查询WSUS数据库以查看需要安装在服务器上的更新数量的方法。我在下面的博客上找到了一个部分答案,但是这个答案将假设如果更新正在等待批准,那么服务器仍然需要它(WSUS在其UI中也假设这一点) 我希望这个解决方案对其他人有用 SELECT left(tbComputerTarget.FullDomainName,30) as [Machine Name] ,count(tbComputerTarget.FullDomainName) as [#

我在互联网上到处搜索,寻找一种查询WSUS数据库以查看需要安装在服务器上的更新数量的方法。我在下面的博客上找到了一个部分答案,但是这个答案将假设如果更新正在等待批准,那么服务器仍然需要它(WSUS在其UI中也假设这一点)


我希望这个解决方案对其他人有用

SELECT left(tbComputerTarget.FullDomainName,30) as [Machine Name]
           ,count(tbComputerTarget.FullDomainName) as [# of Missing patches]
           ,tbComputerTarget.LastSyncTime as [Last Sync Time]
FROM tbUpdateStatusPerComputer INNER JOIN tbComputerTarget ON tbUpdateStatusPerComputer.TargetID =          
            tbComputerTarget.TargetID
WHERE (NOT (tbUpdateStatusPerComputer.SummarizationState IN (’1′, ’4′))) AND
            tbUpdateStatusPerComputer.LocalUpdateID IN (SELECT LocalUpdateID FROM dbo.tbUpdate WHERE UpdateID IN        
            (SELECT UpdateID FROM PUBLIC_VIEWS.vUpdateApproval WHERE Action=’Install’))
GROUP BY tbComputerTarget.FullDomainName, tbComputerTarget.LastSyncTime
ORDER BY COUNT(*) DESC

我希望这个解决方案对其他人有用

SELECT left(tbComputerTarget.FullDomainName,30) as [Machine Name]
           ,count(tbComputerTarget.FullDomainName) as [# of Missing patches]
           ,tbComputerTarget.LastSyncTime as [Last Sync Time]
FROM tbUpdateStatusPerComputer INNER JOIN tbComputerTarget ON tbUpdateStatusPerComputer.TargetID =          
            tbComputerTarget.TargetID
WHERE (NOT (tbUpdateStatusPerComputer.SummarizationState IN (’1′, ’4′))) AND
            tbUpdateStatusPerComputer.LocalUpdateID IN (SELECT LocalUpdateID FROM dbo.tbUpdate WHERE UpdateID IN        
            (SELECT UpdateID FROM PUBLIC_VIEWS.vUpdateApproval WHERE Action=’Install’))
GROUP BY tbComputerTarget.FullDomainName, tbComputerTarget.LastSyncTime
ORDER BY COUNT(*) DESC

我可以筛选更新名称

SELECT C.FULLDOMAINNAME AS COMPUTADOR,VU.DEFAULTTITLE AS ATUALIZAÇÃO, 
       'STATUS' = CASE 
       WHEN UP.SummarizationState = 1 THEN 'NÃO INSTALADO' 
       WHEN UP.SummarizationState = 2 THEN 'NÃO INSTALADO'  
       WHEN UP.SummarizationState = 3 THEN 'INSTALANDO'
       WHEN UP.SummarizationState = 4 THEN 'INSTALADO'
       WHEN UP.SummarizationState = 5 THEN 'FALHOU'
       END

FROM TBCOMPUTERTARGET C
INNER JOIN tbUpdateStatusPerComputer UP ON C.TargetID = UP.TargetID
INNER JOIN tbUpdate U ON UP.LocalUpdateID = U.LocalUpdateID
INNER JOIN [PUBLIC_VIEWS].[vUpdate] VU ON U.UpdateID = VU.UpdateId
WHERE VU.DefaultTitle LIKE 'WINDOWS Internet Explorer 9 for Windows 7' 
        OR VU.DefaultTitle LIKE'Update for Microsoft Office 2010%'

我可以筛选更新名称

SELECT C.FULLDOMAINNAME AS COMPUTADOR,VU.DEFAULTTITLE AS ATUALIZAÇÃO, 
       'STATUS' = CASE 
       WHEN UP.SummarizationState = 1 THEN 'NÃO INSTALADO' 
       WHEN UP.SummarizationState = 2 THEN 'NÃO INSTALADO'  
       WHEN UP.SummarizationState = 3 THEN 'INSTALANDO'
       WHEN UP.SummarizationState = 4 THEN 'INSTALADO'
       WHEN UP.SummarizationState = 5 THEN 'FALHOU'
       END

FROM TBCOMPUTERTARGET C
INNER JOIN tbUpdateStatusPerComputer UP ON C.TargetID = UP.TargetID
INNER JOIN tbUpdate U ON UP.LocalUpdateID = U.LocalUpdateID
INNER JOIN [PUBLIC_VIEWS].[vUpdate] VU ON U.UpdateID = VU.UpdateId
WHERE VU.DefaultTitle LIKE 'WINDOWS Internet Explorer 9 for Windows 7' 
        OR VU.DefaultTitle LIKE'Update for Microsoft Office 2010%'

这对我提出的问题没有好处。我在查找每个服务器的挂起更新数,而不是特定的更新。如果您想回答如何按更新过滤,最好创建一个单独的问题。这对我提出的问题没有好处。我在查找每个服务器的挂起更新数,而不是特定的更新。如果您想回答如何按更新过滤,最好创建一个单独的问题。