Jobs en MOSS que se ejecutan cuando quieren!

Buenas a todos.

La verdad es que me duele tener que poner un post de este tipo, en el que no puedo contar una cosa buena de MOSS 2007 si no que tengo la obligación de comentaros un Bug del sistema.

El caso es que nuestros amigos de producto no se dieron cuenta de como funciona el tema de los horarios en este planeta.

 

Esto no es un problema para el producto en sí, si no para el sistema de ‘Jobs’ que trabaja por debajo ( tanto en MOSS 2007 como en WSS 3.0 ), lo cual hace que cuando planificamos un Job, al almacenarlo en la tabla de Jobs pendientes de ejecución, lo almacena con una Fecha/Hora que no tiene por que ser la que nosotros queremos.

Esto también sucede en estas circunstancias:

• Cuando queremos disparar un proceso de ‘Deploy’ del contenido

• Cuando preparamos un Job de copia de seguridad o restauración

• Al agregar un servidor con el rol de ‘Query’ o con el rol de ‘Index Server’

• Al provisionar aplicaciones web

• Al cambiar las credenciales del Servicio de Seguridad.

• Al cambiar la configuración de Diagnósticos.

Como podeis ver, la verdad es que el problema se puede reproducir facilmente incluso sin que nos demos cuenta, y lo que es peor, un problema de estos supone el volverte loco buscando el motivo por el cual no se te ha ejecutado la copia de seguridad cuando tu querías.

Por parte de Microsoft, nos dan algunos de los consejos que nos dán para solucionar el problema en esta página

• Schedule tasks to start one hour earlier during daylight saving time.

• Change the time zone on the servers that are running SharePoint Server 2007 to a similar time zone that does not use DST, as follows:

• In Auckland, in Wellington, in Fiji, in Kamchatka, and in the Marshall Islands, change the time zone to (Coordinated Universal Time (UTC)+12:00).

• In Canberra, in Melbourne, in Sydney, and in Brisbane, change the time zone to (UTC+10:00).

• In Adelaide and in Darwin, change the time zone to (UTC+09:30).

• In Perth, in Kuala Lumpur, and in Singapore, change the time zone to (UTC+08:00).

Hombre, la verdad es que ninguno de ellos es mi favorito, por lo que vamos a ver otra forma de solucionar el problema.

En MOSS, cuando se planifica la ejecución de una tarea ( sea voluntaria o involuntariamente ), el sistema almacena la información de la tarea en la tabla ‘ScheduledWorkItems’ de la base de datos de contenidos de WSS.

Para ello utiliza el procedimiento almacenado ‘proc_AddWorkItem’ y aqui es donde está el problema.

Entre los parámetros que le están llegando aparece ‘@DeliveryDate’, un datetime que por algún motivo que desconozco ( aún ) no pasa la información de forma correcta, por lo que lo que vamos a hacer es cambiar ese valor en el principio del procedimiento con la siguiente línea:

set @DeliveryDate = dateadd(second, datediff(s,getdate(),getutcdate()), @DeliveryDate)

Solucionado!

Solo hay un problema con esta solución. Como es lógico si se modifica alguno de los procedimientos almacenados, se pierde el soporte por parte de Microsoft. Por lo que, si en algún momento os decidís a hacer esto … que no os pillen!

Espero que os sirva de ayuda.

Un Saludo a todos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *