jueves, 25 de octubre de 2012

Paquetes de definiciones EndPoint Protection 2012 vacios

Síntomas:

English Version at MSDN Forums.

En System Center Configuration Manager 2012 con un servidor SQL Server español las reglas para la distribución automática de paquetes con definiciones de End Point Protection nunca se rellenan con las actualizaciones del WSUS.

Cuando analizas el rulengine.log encuentras estas entradas:
Query to run is: select CI_ID from dbo.fn_ListUpdateCIs(3082) ci~where IsExpired=0~ and (DateRevised>=N'2012-10-23 22:22:08')~ and (CI_ID in (select CI_ID from fn_ListCICategoriesAll(3082) where CategoryTypeName='Product' and (CategoryInstanceName in (N'Forefront Endpoint Protection 2010')))) SMS_RULE_ENGINE 25/10/2012 0:22:08 3136 (0x0C40)
Rule resulted in a total of 0 updates SMS_RULE_ENGINE 25/10/2012 0:22:09 3136 (0x0C40)

Solución:

En mi caso bastó con cambiar el idioma prederminado del SQL Server a Inglés ( en propiedades del servidor motor de BD, Avanzadas, Idioma por defecto).
Para ver si es tu caso lee los siguientes comentarios.

Comentarios:

Si te fijas en la primera línea del registro, a continuación del Query to run is:  tenemos una clausula SQL que podemos copiar y pegar en la en la consola (SSMS) del SQL Server. Una vez eliminado los símbolos ~   y con unos saltos de línea queda bastante legible.
select CI_ID from dbo.fn_ListUpdateCIs(3082) ci 
where IsExpired=0  
 and (DateRevised>=N'2012-10-23 22:22:08')  
 and (CI_ID in (select CI_ID from fn_ListCICategoriesAll(3082) 
                where CategoryTypeName='Product' 
                and (CategoryInstanceName in (N'Forefront Endpoint Protection 2010')
))) 
Pero si la ejecutamos tenemos un  un error:

CI_ID
-----------
Mens. 242, Nivel 16, Estado 3, Línea 1
La conversión del tipo de datos nvarchar en datetime produjo un valor fuera de intervalo.

Este error debería desaparecer si cambias en la consulta el formato de fecha (En lugar de 2012-10-23 escribes 23-10-2020).

select CI_ID from dbo.fn_ListUpdateCIs(3082) ci 
where IsExpired=0  
 and (DateRevised>=N'23-10-2012 22:22:08')  
 and (CI_ID in (select CI_ID from fn_ListCICategoriesAll(3082) 
                where CategoryTypeName='Product' 
                and (CategoryInstanceName in (N'Forefront Endpoint Protection 2010')
))) 
Obtendrás la lista de ids de definiciones, en mi caso fué:
CI_ID
-----------
16811415
16811428
16811468

(3 filas afectadas)
Por eso si cambias el idioma predeterminado a inglés del SQL Server te funcionara la ADR de SCCM.

Nota:

En mi caso opté por cambiar el idioma en el servidor  pero es posible que cambiándolo en los usuarios de SCCM o el origen de datos ODBC del servidor SCCM se resuelva también el problema.

No hay comentarios: