Sql server agent

26/11/2003 - 17:57 por Miguel Tubía | Informe spam
Hola (de nuevo :))
tengo un sp que crea un trabajo (sobre el que hablado antes...). Esta vez
quiero saber si el sql server agent está iniciado o no. Eso lo gestiono al
principio del sp y si no está iniciado devuelvo un código de error (si no lo
está no se puede crear el trabajo, o al menos no se puede hacer un
sp_add_jobserver, pues me ha dado error ya.
Yo lo controlaba con el sp msdb.dbo.sp_is_sqlagent_starting, pero o lo
manejo o no sirve para eso. ¿Alguien sabe como lo puedo hacer? ¿O solo me
queda como consuelo esperar q pete y arreglarlo? Eso es lo q hago ahora
(recupero el retorno de sp_add_jobserver y si falla actúo en consecuencia).
Muchas gracias a todos. Me voy a casita ahora y desde ahí leeré las
respuestas si las hay (en verdad debemos ser de los pocos que se llevan el
trabajo a casa y, a veces, disfrutan con ello cuando aprenden cosas
nuevas... sigh...)
Un saludo

Preguntas similare

Leer las respuestas

#1 Javier Loria
26/11/2003 - 18:33 | Informe spam
Hola Miguel:
Cual es tu codigo para agregar el JOB, ya que es SI es posible agregar
Jobs con el Agente apagado?, acabo de hacerlo :)
En todo caso creo que podrias correr sp_get_sqlagent_properties para
obtener el estado del servidor. Este procedimiento NO esta documentado y por
ende es muy probable que en la proxima version no funcione o no funcione
igual.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Miguel Tubía escribio:
Hola (de nuevo :))
tengo un sp que crea un trabajo (sobre el que hablado antes...). Esta
vez quiero saber si el sql server agent está iniciado o no. Eso lo
gestiono al principio del sp y si no está iniciado devuelvo un código
de error (si no lo está no se puede crear el trabajo, o al menos no
se puede hacer un sp_add_jobserver, pues me ha dado error ya.
Yo lo controlaba con el sp msdb.dbo.sp_is_sqlagent_starting, pero o lo
manejo o no sirve para eso. ¿Alguien sabe como lo puedo hacer? ¿O
solo me queda como consuelo esperar q pete y arreglarlo? Eso es lo q
hago ahora (recupero el retorno de sp_add_jobserver y si falla actúo
en consecuencia). Muchas gracias a todos. Me voy a casita ahora y
desde ahí leeré las respuestas si las hay (en verdad debemos ser de
los pocos que se llevan el trabajo a casa y, a veces, disfrutan con
ello cuando aprenden cosas nuevas... sigh...)
Un saludo
Respuesta Responder a este mensaje
#2 ulises
26/11/2003 - 19:16 | Informe spam
Si se puede agregar un job cuando el SQL Server Agent este
apagado y lo puedes hacer con sp_add_job y sp_add_jobstep
o graficamente (lo necesitas activo solo para ejecutarlo o
para que se realice la ejecución en la fecha en que lo has
programado).

Saludos,
Ulises
PD. El sp_add_jobserver lo que hace es asignar un job ya
existente a un servidor.


Hola (de nuevo :))
tengo un sp que crea un trabajo (sobre el que hablado


antes...). Esta vez
quiero saber si el sql server agent está iniciado o no.


Eso lo gestiono al
principio del sp y si no está iniciado devuelvo un código


de error (si no lo
está no se puede crear el trabajo, o al menos no se puede


hacer un
sp_add_jobserver, pues me ha dado error ya.
Yo lo controlaba con el sp


msdb.dbo.sp_is_sqlagent_starting, pero o lo
manejo o no sirve para eso. ¿Alguien sabe como lo puedo


hacer? ¿O solo me
queda como consuelo esperar q pete y arreglarlo? Eso es


lo q hago ahora
(recupero el retorno de sp_add_jobserver y si falla actúo


en consecuencia).
Muchas gracias a todos. Me voy a casita ahora y desde ahí


leeré las
respuestas si las hay (en verdad debemos ser de los pocos


que se llevan el
trabajo a casa y, a veces, disfrutan con ello cuando


aprenden cosas
nuevas... sigh...)
Un saludo


.

Respuesta Responder a este mensaje
#3 Miguel Tubia
26/11/2003 - 19:58 | Informe spam
Hola,
gracias por responder. La verdad q el trabajo sí lo crea, El error lo da al
hacer el .sp_add_jobserver, pero si miro la tabla sysobjs si que esta
creado.
El código es muy largo, pero más o menos hago el sp_add_job y cojo el id del
job. Luego creo los pasos con sp_add_jobstep. En @on_success_step_id y
@on_fail_step_id les doy un paso que creo luego. Me da la advertencia que
ese paso no está creado, pero lo creo más abajo ¿está bien? El trabajo lo
indico mediante el id que he sacado antes (podría tb por nombre, pero
bueno...)
Luego creo la programacion, q aqui creo q tengo algo mal: quiero q lo
ejecute un dia a una hora, y eso lo tengo en un datetime q paso como
parámetro al sp q crea el job. Así pues hallo los @active_start_date,
@active_end_date, @active_start_time, @active_end_time en el formato q dice
(aaaammdd - hhmmss). Vale, pero si quiero q solo se ejecute una vez a una
hora en un dia, ¿q valores tengo q darles? tengo esto puesto así:
@freq_type=1,
@freq_interval =1,
@freq_subday_type=0x1
pero a @active_start_date, @active_end_date, @active_start_time,
@active_end_time no sé como tratarlos. Si quiero q se ejecute solo un día,
pongo la misma fecha en @active_start_date y en @active_end_date, y si
quiero una hora, pongo esa en @active_start_time, pero en @active_end_time
¿q debo poner? ¿Q significa exactamente?
Bueno, una vez creo la programación, hago el sp_add_jobserver y ahí me dice
q no lo puedo hacer pq el sql server agent no esta iniciado. ¿Cómo lo puedo
iniciar? Pq a mi me interesa iniciarlo si tengo un trabajo o una alerte o
algo... Lo ideal sería tenerlo siempre iniciado, pero estas cosas ya se
sabe, un día se van al garete y bueno. Yo quería saber si está iniciado
para, si no lo está lo incio por código y si da un error, trato el trabajo
de otro forma por programa externo ya.
Bueno, espero haber explicado un poco esto. Ha sido largo pero si pongo el
resto del código bueno
Espero me puedan echar una mano
Gracias de nuevo, un saludo
Respuesta Responder a este mensaje
#4 Miguel Tubia
26/11/2003 - 20:35 | Informe spam
Hola,
gracias por responder.
una preguntita. El sp_add_jobserver como dices asigna un trabajo ya
existente a un servidor. ¿Ese trabajo donde esta? ¿En otro servidor y lo
'copia'?
Es decir, sin esa instrucción, al crear un trabajo ya me lo 'añade' al
local? y con esta lo puedo añadir a otro servidor?
Gracias por la ayuda
Un saludo
Respuesta Responder a este mensaje
#5 Javier Loria
26/11/2003 - 23:12 | Informe spam
Hola Miguel:
No se si te sirve esta "tecnica", para revisar los comandos para agregar
el JOB.
a) Prende el Profiler e Inicia una Traza "Default".
b) Con el Enterprise Manager Agrega tu trabajo "manualmente".
c) Luego tomas la traza y en el Query Analizer ajustas las cosas.
Para esto asumo que tu servidor es de desarrollo.
En cuanto al servidor no creo que haya comando de SQL que te permitan
prender el servicio.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Miguel Tubia escribio:
Hola,
gracias por responder. La verdad q el trabajo sí lo crea, El error lo
da al hacer el .sp_add_jobserver, pero si miro la tabla sysobjs si
que esta creado.
El código es muy largo, pero más o menos hago el sp_add_job y cojo el
id del job. Luego creo los pasos con sp_add_jobstep. En
@on_success_step_id y @on_fail_step_id les doy un paso que creo
luego. Me da la advertencia que ese paso no está creado, pero lo creo
más abajo ¿está bien? El trabajo lo indico mediante el id que he
sacado antes (podría tb por nombre, pero bueno...)
Luego creo la programacion, q aqui creo q tengo algo mal: quiero q lo
ejecute un dia a una hora, y eso lo tengo en un datetime q paso como
parámetro al sp q crea el job. Así pues hallo los @active_start_date,
@active_end_date, @active_start_time, @active_end_time en el formato
q dice (aaaammdd - hhmmss). Vale, pero si quiero q solo se ejecute
una vez a una hora en un dia, ¿q valores tengo q darles? tengo esto
puesto así: @freq_type=1,
@freq_interval =1,
@freq_subday_type=0x1
pero a @active_start_date, @active_end_date, @active_start_time,
@active_end_time no sé como tratarlos. Si quiero q se ejecute solo un
día, pongo la misma fecha en @active_start_date y en
@active_end_date, y si quiero una hora, pongo esa en
@active_start_time, pero en @active_end_time ¿q debo poner? ¿Q
significa exactamente?
Bueno, una vez creo la programación, hago el sp_add_jobserver y ahí
me dice q no lo puedo hacer pq el sql server agent no esta iniciado.
¿Cómo lo puedo iniciar? Pq a mi me interesa iniciarlo si tengo un
trabajo o una alerte o algo... Lo ideal sería tenerlo siempre
iniciado, pero estas cosas ya se sabe, un día se van al garete y
bueno. Yo quería saber si está iniciado para, si no lo está lo incio
por código y si da un error, trato el trabajo de otro forma por
programa externo ya.
Bueno, espero haber explicado un poco esto. Ha sido largo pero si
pongo el resto del código bueno
Espero me puedan echar una mano
Gracias de nuevo, un saludo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida