WSUS guarda su información en SQL Server 2005 SP1 o en una base de datos “interna” que es en realidad un SQL Server Express pero sin las herramientas de administración.
La buena noticia es que podemos acceder a la información almacenada en la base de datos para crear nuestros propios informes.
En este artículo veremos cómo recoger los datos básicos, que mas tarde uniremos con el directorio activo para generar un informe global de la situación de actualizaciones.
La base de datos de WSUS se llama “SUSDB” y provee de una serie de vistas públicas que son las que se supone que deberíamos usar para crear nuestros informes.
Desgraciadamente estas vistas son un tanto enrevesadas y no incluyen algunos datos que queremos así que tendremos que acceder directamente a las tablas en las que se almacena la información, usar las tablas no está recomendado ni soportado y hay que entender que cualquier Service Pack o actualización de WSUS podría modificar el esquema de dichas tablas y nuestros informes dejarían de funcionar.
Tendremos que usar dos tablas.
–tbComputerTarget, que contiene la lista de todos los ordenadores conectados al WSUS y su información básica como cuando se conectaron por última vez, la ip, etc.
–tbComputerSummaryForMicrosoftUpdates, que nos permitirá saber cuántas actualizaciones tiene pendiente cada ordenador, cuantas ha instalado ya, etc.
Estas dos tablas tienen un campo que nos permite unirlas y que se llama TargetID.
Por lo tanto la siguiente instrucción creara una vista que nos dará una visión detallada del estado de las actualizaciones.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[vWsusDetalle]
AS
select
WSUSComputers.FullDomainName as [Nombre Maquina],
WSUSComputers.LastSyncTime as [Ultima Sincronización],
WSUSComputers.LastReportedStatusTime as [Ultima Conexión],
WSUSSumary.Unknown as Desconocido,
WSUSSumary.NotInstalled as [No Instaladas],
WSUSSumary.Downloaded as [Necesarias],
WSUSSumary.Installed as [Instaladas],
WSUSSumary.Failed as [Errores],
WSUSSumary.InstalledPendingReboot as [Pendientes De Reinicio]
from
tbComputerTarget WSUSComputers
inner join
tbComputerSummaryForMicrosoftUpdates WSUSSumary
on
WSUSComputers.TargetID= WSUSSumary.TargetID
Para obtener una información sumariada usaremos esta otra query que aunque poco elegante es efectiva y nos mostrara cuantos ordenadores tenemos en cada situación y cuantos ordenadores están administrados por el WSUS.
Select
‘Maquinas Administradas’ as Contador,
count(*) as Valor
from
vWsusDetalle
Union All
select
‘Desconocido/ No Aplicable’ as Contador,
count(*) as Valor
from
vWsusDetalle
Where
Desconocido > 0
union all
select
‘No Instaladas’ as Contador,
count(*) as Valor
from
vWsusDetalle
where
[No Instaladas]>0
union all
select
‘Necesarias’ as Contador,
count(*) as Valor
from
vWsusDetalle
where
Necesarias>0
union all
select
‘Con Errores’ as Contador,
count(*) as Valor
from
vWsusDetalle
where
Errores >0
union all
select
‘Pendientes De Reinicio’ as Contador,
count(*) as Valor
from
vWsusDetalle
where
[Pendientes De Reinicio] >0
En la siguiente parte de esta serie de artículos veremos cómo unir estos datos con el directorio activo para saber cuántos ordenadores hay en total en el directorio activo que no se estén usando y cuantos hay que se están usando y no se están en contacto con el WSUS, después veremos cómo juntar todo esto en un informe hecho con Reporting Services.