¿Cuál es la mejor manera de ejecutar un paquete MS SQL Server 2000 DTS desde un disparador?

StackOverflow https://stackoverflow.com/questions/252069

  •  05-07-2019
  •  | 
  •  

Pregunta

Miré a mi alrededor y encontré algunas ideas sobre cómo hacer esto, pero no la mejor manera definitiva. Una de las ideas fue usar sp_start_job para iniciar un trabajo del Agente SQL Server que ejecuta el paquete DTS. Si esta es la mejor manera de hacerlo, entonces la siguiente pregunta sería, " ¿Cómo programo un paquete DTS desde un trabajo y lo hago no recurrente? & Quot;

Gracias, Tim

¿Fue útil?

Solución

xp_cmdshell le permitiría ejecutar dtsrun.

Otros consejos

No sugeriría vincular este tipo de funcionalidad a un activador. Se supone que los disparadores son rápidos. No creo que haya ninguna manera de lanzar un paquete DTS que sea tan rápido como I quisiera que fuera un activador. Si esto resuena con usted, sugeriría que su activador simplemente inserte una fila en una tabla especial, y luego haga un trabajo que se ejecute con la frecuencia que necesite para su propósito (¿cada minuto? ¿Cada 10 segundos?) Que supervise esta tabla y lanza el paquete DTS apropiado según sea necesario.

En lugar de usar xp_cmdshell, hice esto:

Cuando cambia un determinado valor en una tabla, el activador utiliza msdb.sp_start_job para iniciar un trabajo. Este trabajo no debe ejecutarse en un horario, solo cuando es iniciado por un usuario. Establecí la programación del trabajo para que se ejecute una vez, lo que ahora está en el pasado, y desactivé la casilla habilitada.

Este trabajo tiene un paso, que es DTSRun / ~ Z0xHEXENCRYPTEDVALUE. El paquete DTS copia algunas filas de este servidor a otro servidor en una plataforma diferente y, en caso de éxito, restablece los valores en la tabla con el activador para la próxima vez. El activador verifica un valor de la tabla antes de llamar a sp_start_job, de modo que el trabajo se inicie solo bajo ciertas condiciones, no siempre.

Dado que sp_start_job se ejecuta de forma asíncrona, el activador se completa rápidamente. El único inconveniente de esto es que necesito sondear el valor que se restableció en caso de éxito y dejar que el usuario sepa que funcionó o, después de un período de tiempo fuera, no funcionó.

La alternativa sería usar xp_cmdshell si necesitara una operación sincrónica, lo que podría no ser una buena idea desde dentro de un activador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top