Programar trabajo para que comience en diferentes pasos
Estoy trabajando en un sistema que genera una serie de correos electrónicos recurrentes como parte de varios trabajos programados en el Agente SQL Server. Los correos electrónicos contienen informes basados en texto que están débilmente asociados al tema de sus trabajos, pero no dependen del resultado del trabajo. Cuando un cliente solicita un cambio en el contenido del informe o en la lista de distribución, puede resultar difícil encontrar el trabajo / paso específico responsable de generar el correo electrónico / informe.
Para facilitar el mantenimiento de estas tareas, quiero crear un nuevo trabajo central y mover cada paso de correo electrónico / informe a ese trabajo. Configuraría cada paso del trabajo para "Dejar el trabajo informando éxito". Configuraría un horario único para cada paso del trabajo para que los correos electrónicos / informes se sigan generando en sus horarios normales. Por ejemplo, el paso 1 se ejecutaría todos los días a las 7 a. M. El paso 2 se ejecutaría los sábados y domingos al mediodía. Y así.
Cuando fui a crear un horario, no pude encontrar una manera de especificar en qué paso comenzar. Sé que msdb.dbo.sp_start_jobacepta un @step_nameparámetro. Del mismo modo, el Agente SQL Server me permite elegir un paso desde el que comenzar al iniciar manualmente un trabajo a través de la interfaz de usuario. ¿Hay alguna manera de especificar el paso de inicio desde una programación, o estoy limitado a comenzar con el paso de inicio configurado (predeterminado) como se indica en el trabajo?
Respuestas
Un horario no depende de un trabajo. De hecho, una programación es un recurso compartido que pueden utilizar varios trabajos.
No existe un horario "local". Por supuesto, nada le impide tener un solo trabajo con un horario.
Es decir, no hay lugar en la arquitectura del Agente para que una programación inicie un determinado paso del trabajo.
Entonces, sí, está limitado a tener un horario para comenzar el trabajo en el paso definido en el trabajo.
De la forma en que leo su escenario, no hay nada en común entre los pasos, excepto que comparten el mismo subsistema de su aplicación (o como usted lo diga). Me encantaría que el agente tuviera alguna funcionalidad de espacio de nombres / carpeta para trabajos, pero no. En mi opinión, lo más cerca que puede llegar es tener un estándar de nomenclatura saludable para sus trabajos, utilizando algún prefijo en el nombre del trabajo para identificar a qué sistema pertenece cada conjunto de trabajos. Y, por supuesto, comentarios dentro del trabajo.
Horario es entidad independiente. No podemos mapearlo con los pasos del trabajo. Pero puede lograr sus objetivos de otras dos formas.
Cree otro trabajo y tenga un paso para ejecutar su trabajo requerido como se muestra a continuación. Y programarlo según su deseo.
EXEC msdb.dbo.sp_start_job N'job_name' , 'step_name'Como parte de su paso de trabajo, verifique la fecha y hora actuales, ejecute u omita ese código según sus necesidades.