¿Cómo se le indica a una Granja de SharePoint que ejecute una tarea de temporizador en un servidor específico?
moss wss (5)
Los servidores en una granja deben ser idénticos. Si usa máquinas virtuales para su interfaz web, puede tomar un servidor y aprovisionar copias para que sepa que todas son idénticas.
Tenemos un trabajo de temporizador SP que estuvo funcionando bien por bastante tiempo. Recientemente, los administradores contrataron otro servidor en la granja y, en consecuencia, SharePoint decidió comenzar a ejecutar este trabajo del temporizador en este otro servidor. El problema es que el servidor no tiene todas las dependencias instaladas (es decir, Oracle) y por lo tanto el trabajo está fallando. Solo estoy buscando el camino de menor resistencia aquí. Mi pregunta es ¿hay alguna manera de forzar que un trabajo de temporizador se ejecute en el servidor que desea?
[Editar] Si puedo hacerlo a través del código que funciona para mí. Solo necesito saber qué es la API para hacer esto si existe.
Podría implementar un servicio web con el registro empresarial e implementar ese servicio web en una máquina. Entonces su tarea de temporizador podría activar su servicio web periódicamente.
No debería ser tan importante cuando tu trabajo de temporizador se está ejecutando. SharePoint decide dónde ejecutar el trabajo del temporizador.
Trabajos de temporizador por definición se ejecutan en todos los front end web.
Si necesita que la lógica programada se ejecute en un servidor específico, debe codificarla específicamente en el trabajo del temporizador o utilizar un servicio NT "estándar".
Creo que un efecto secundario de configurar SPJobLockType en ''Trabajo'' es que se ejecutará en el servidor donde se envía el trabajo.
Me disculpo si presiono por lo obvio; Simplemente no he visto a nadie desglosarlo aún.
Restringir un trabajo de temporizador personalizado (es decir, su propia clase de trabajo de temporizador que se deriva de SPJobDefinition) se realiza controlando los parámetros del constructor.
Los trabajos de temporizador normalmente se ejecutan en el servidor donde se envían (como lo indica vinny) suponiendo que no se especifique ningún servidor de destino durante la creación del trabajo del temporizador. Sin embargo, los dos constructores sobrecargados para el tipo SPJobDefinition aceptan un SPServer y un SPJobLockType como los parámetros tercero y cuarto, respectivamente. Usar estos dos parámetros correctamente le permitirá dictar dónde se ejecuta su trabajo.
Al especificar su servidor de destino como SPServer y SPJobLockType de "Trabajo", puede limitar la instancia de trabajo del temporizador que cree para que se ejecute en el servidor de su elección.
Para documentación sobre lo que he descrito, vea MSDN: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spjobdefinition.spjobdefinition.aspx .
No sé nada sobre el código que está ejecutando, pero los trabajos de temporizador personalizados se suelen configurar durante la activación de características. Tengo la sensación de que su código base puede no ser el suyo (?); si es así, es posible que desee buscar el uno o más tipos / clases que se derivan de SPFeatureReceiver. En el método FeatureActivated de dichas clases es donde puede encontrar el código que realmente lleva a cabo la instanciación del trabajo del temporizador.
Por supuesto, también querrá consultar la clase de trabajo del temporizador personalizado (o clases) para ver cómo se están creando las instancias. A veces, los desarrolladores crearán la instanciación de la clase en la propia clase (a través del patrón de Método de fábrica, por ejemplo). Sin embargo, entre la clase de trabajo del temporizador y las implementaciones SPFeatureReceiver, debe estar en camino de encontrar lo que necesita cambiar.
¡Espero que eso ayude!