¿Cómo ejecuto un archivo por lotes desde un trabajo programado a través del Agente SQL Server

12

Estoy intentando ejecutar un archivo por lotes (Windows) desde un trabajo de agente de SQL Server en SQL Server 2008 R2. En los Pasos del trabajo, he creado un nuevo paso, establezco su tipo en "Sistema operativo (CmdExec)". Inicialmente intenté poner solo el nombre del archivo por lotes en el campo "Comando". Da un error que no puede encontrar el archivo.

Luego probé: cmd.exe c: \ test.bat

Esto comienza, pero nunca se completa (y no parece que realmente esté funcionando de todos modos).

Traté de ajustar el nombre del archivo por lotes entre comillas: cmd.exe "C: \ test.bat" pero eso tampoco hace ninguna diferencia.

¿Cuál es la combinación mágica para que esto funcione?

Paul Mrozowski
fuente
¿Estaba utilizando la ruta completa cuando recibió el error "archivo no encontrado"? ¿La ruta es válida en el servidor en ejecución, no solo en su estación de trabajo? ¿Son absolutas las rutas dentro del archivo por lotes?
Jon of All Trades
Sí, estoy usando la ruta completa. Es la ruta correcta en el servidor que lo ejecuta. El archivo por lotes no es más que una simple prueba: echo> C: \ temp \ itworks.txt
Paul Mrozowski

Respuestas:

11

Si la memoria me sirve correctamente:

cmd.exe /c "c:\test.bat"

Se necesitan comillas si hay espacios en la ruta o el nombre del archivo

SqlACID
fuente
1

Además, verifique los permisos utilizados para el Servicio de Agente de Trabajo. Podría ser que el usuario que ejecuta el servicio no tenga permiso para ver el archivo.

Buena suerte

Dan OBrien
fuente
0

Compruebe que tiene permisos para ejecutar el archivo por lotes en esa unidad y ubicación de carpeta.

No olvide que cuando lo ejecuta manualmente se usan sus credenciales, pero cuando se ejecuta automáticamente por el Agente SQL, se usan las credenciales y permisos del agente.

Phill H
fuente
0

solo "c:\test.bat"hará el trabajo

Ronald Tims
fuente
1
Hola, bienvenido al sitio. Si bien su respuesta puede ser útil, generalmente es mejor incluir algunos detalles más sobre por qué esto funcionaría mientras que el comando en la pregunta no lo hace.
Tom V - prueba topanswers.xyz