job sqlserver2005

04/07/2009 - 17:40 por Silvina | Informe spam
Hola
Tengo un store procedure que al ejecutarlo desde el management studio
trabaja bien sin embargo cuando lo ejecuto desde el job, si bien no tira
error, no carga la tabla que debería cargar.

El job tiene 2 pasos, uno de ellos si carga bien, pero este otro no.

Alguien puede darme una pista de qué puede estar ocurriendo?
Desde ya muchas gracias.
Silvina

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
06/07/2009 - 08:58 | Informe spam
Bastante complicado ayudarte si no tenemos la definición de lo que hace ese
job ni de qué ejecuta el procedimiento almacenado.

¿Has mirado en el histórico del job, por si hubiera algún mensaje indicativo
de lo que ha podido ocurrir?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil. si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba
"Silvina" wrote in message
news:
Hola
Tengo un store procedure que al ejecutarlo desde el management studio
trabaja bien sin embargo cuando lo ejecuto desde el job, si bien no tira
error, no carga la tabla que debería cargar.

El job tiene 2 pasos, uno de ellos si carga bien, pero este otro no.

Alguien puede darme una pista de qué puede estar ocurriendo?
Desde ya muchas gracias.
Silvina
Respuesta Responder a este mensaje
#2 Silvina
06/07/2009 - 17:02 | Informe spam
El JOB hace una secuencia de comandos TSQL
declare @dia int
declare @error int
declare @id int
declare @DNIrepo char(10)
declare @horaentrada char(8)
declare @horasalida char(8)
declare @idpdv int
declare @iddetalle int
declare @idruteo int
declare @idruteodetalle int
declare @numcliente int
declare @idrelevamiento int
declare @idprodclte int
declare @stockminimo int
declare @idsector int
declare @idcargaprecios int
declare @pdvsiesmixto int
declare @areasiesmixto int
declare @idprodcomp int
declare @idshare int
declare @idsharecomp int
declare @idmaymin int
declare @semana int
select @dia = iddia from dias where dia = datename(weekday,getdate())
select @semana = datediff(week, convert(varchar(6), getdate(), 112) + '01',
getdate()) + 1
set @id = 0
set @iddetalle= 0
set @error = 0
delete from ruteos where convert(varchar,fechabaja ,112) =
convert(varchar,getdate() ,112)
declare cursor_autocarga cursor for

select ru.DNIrepo,ru.horaentrada ,ru.horasalida ,ru.idpdv,
ru.idruteo,rd.idruteodetalle,
rd.numcliente ,re.idrelevamiento, pp.idprodclte as producto
,null as prodcomparativo ,null as productoshare ,null as
prodcomparativoshare
,case when pp.idsector is not null then pp.idsector else p.idsectorgenerico
END as sector
, case when pp.stockminimo is not null then pp.stockminimo else
p.cantptoquiebre END as stockminimo , null as sectormixto ,2 as idmaymin
from ruteos ru
inner join ruteosdetallecliente rd on rd.idruteo = ru.idruteo
inner join tipocliente t on t.numcliente = rd.numcliente
inner join productoxpdv pp on pp.idpdv = ru.idpdv and pp.numcliente =
rd.numcliente
inner join prod_clte pk on pk.idprodclte = pp.idprodclte and pk.numcliente =
rd.numcliente
inner join produtosclientes p on p.idprodclte = pk.idprodclte
inner join personal prs on prs.DNIpersonal = ru.DNIrepo
inner join pdv v on v.idpv = ru.idpdv
inner join cadenasclientes kc on kc.idcadena =v.idcadena and kc.numcliente
= rd.numcliente
inner join pdvclientes bc on bc.idpv =ru.idpdv and bc.numcliente =
rd.numcliente
inner join cadenas k on k.idcadena = v.idcadena
inner join provincias pro on pro.idprovincia = v.idprovincia
inner join zonas z on z.idzona = v.idzona
inner join localidades l on l.idlocalidad = v.idlocalidad
left join partidos par on par.idpartido = v.idpartido
inner join diasderelevamiento re on re.iddia = ru.iddia and re.numcliente =
rd.numcliente
inner join relevamientosporcliente rlc on rlc.idrelevamiento =
re.idrelevamiento and rlc.numcliente = rd.numcliente
where re.estado = 1 and (re.idsemana is null or re.idsemana =@semana )
and ru.estado = 1 and rd.estado = 1 and t.estado=1
and pp.estado = 1 and pk.estado=1 and p.estado= 1 and prs.estado=1
and v.estado=1 and kc.estado = 1 and bc.estado = 1
and k.estado=1 and pro.estado=1 and z.estado=1 and l.estado=1 and
rlc.estado = 1 --and par.estado = 1
and convert(varchar,ru.fechaalta ,112) <= convert(varchar,getdate() ,112)
and (convert(varchar,ru.fechabaja ,112) >= convert(varchar,getdate() ,112)
or ru.fechabaja is null )
and ru.iddia = @dia and ((ru.idsemana is null ) or ( ru.idsemana =
@semana ))
and p.estadostock = 1
and pk.estadostock = 1
and pp.stock = 1
and re.idrelevamiento = 1
union
select ru.DNIrepo,ru.horaentrada ,ru.horasalida ,ru.idpdv,
ru.idruteo,rd.idruteodetalle,
rd.numcliente ,re.idrelevamiento, pp.idprodclte as producto
,null as prodcomparativo ,null as productoshare ,null as
prodcomparativoshare
,case when pp.idsector is not null then pp.idsector else p.idsectorgenerico
END as sector
, null as stockminimo , null as sectormixto ,2 as idmaymin
from ruteos ru
inner join ruteosdetallecliente rd on rd.idruteo = ru.idruteo
inner join tipocliente t on t.numcliente = rd.numcliente
inner join productoxpdv pp on pp.idpdv = ru.idpdv and pp.numcliente =
rd.numcliente
inner join prod_clte pk on pk.idprodclte = pp.idprodclte and pk.numcliente =
rd.numcliente
inner join produtosclientes p on p.idprodclte = pk.idprodclte
inner join personal prs on prs.DNIpersonal = ru.DNIrepo
inner join pdv v on v.idpv = ru.idpdv
inner join cadenasclientes kc on kc.idcadena =v.idcadena and kc.numcliente
= rd.numcliente
inner join pdvclientes bc on bc.idpv =ru.idpdv and bc.numcliente =
rd.numcliente
inner join cadenas k on k.idcadena = v.idcadena
inner join provincias pro on pro.idprovincia = v.idprovincia
inner join zonas z on z.idzona = v.idzona
inner join localidades l on l.idlocalidad = v.idlocalidad
left join partidos par on par.idpartido = v.idpartido
inner join diasderelevamiento re on re.iddia = ru.iddia and re.numcliente =
rd.numcliente
inner join relevamientosporcliente rlc on rlc.idrelevamiento =
re.idrelevamiento and rlc.numcliente = rd.numcliente
where re.estado = 1 and (re.idsemana is null or re.idsemana =@semana )
and ru.estado = 1 and rd.estado = 1 and t.estado=1
and pp.estado = 1 and pk.estado=1 and p.estado= 1 and prs.estado=1
and v.estado=1 and kc.estado = 1 and bc.estado = 1
and k.estado=1 and pro.estado=1 and z.estado=1 and l.estado=1 and
rlc.estado = 1 --and par.estado = 1
and convert(varchar,ru.fechaalta ,112) <= convert(varchar,getdate() ,112)
and (convert(varchar,ru.fechabaja ,112) >= convert(varchar,getdate() ,112)
or ru.fechabaja is null )
and ru.iddia = @dia and ((ru.idsemana is null ) or ( ru.idsemana =
@semana ))
and p.estadofacing = 1
and pk.estadofacing = 1
and pp.facing = 1
and re.idrelevamiento = 4
union
select ru.DNIrepo,ru.horaentrada ,ru.horasalida ,ru.idpdv,
ru.idruteo,rd.idruteodetalle,
rd.numcliente ,re.idrelevamiento, pp.idprodclte as producto
,cmp.idprodcomp as prodcomparativo ,null as productoshare ,null as
prodcomparativoshare
,case when pp.idsector is not null then pp.idsector else p.idsectorgenerico
END as sector
,null as stockminimo ,pp.idpdvmaymin as sectormixto ,2 as idmaymin
from ruteos ru
inner join ruteosdetallecliente rd on rd.idruteo = ru.idruteo
inner join tipocliente t on t.numcliente = rd.numcliente
inner join productoxpdv pp on pp.idpdv = ru.idpdv and pp.numcliente =
rd.numcliente
inner join prod_clte pk on pk.idprodclte = pp.idprodclte and pk.numcliente =
rd.numcliente
inner join produtosclientes p on p.idprodclte = pk.idprodclte
inner join personal prs on prs.DNIpersonal = ru.DNIrepo
left join comparacionprecios cmp on cmp.idprodclte = pp.idprodclte
inner join pdv v on v.idpv = ru.idpdv
inner join cadenasclientes kc on kc.idcadena =v.idcadena and kc.numcliente
= rd.numcliente
inner join pdvclientes bc on bc.idpv =ru.idpdv and bc.numcliente =
rd.numcliente
inner join cadenas k on k.idcadena = v.idcadena
inner join provincias pro on pro.idprovincia = v.idprovincia
inner join zonas z on z.idzona = v.idzona
inner join localidades l on l.idlocalidad = v.idlocalidad
left join partidos par on par.idpartido = v.idpartido
inner join diasderelevamiento re on re.iddia = ru.iddia and re.numcliente =
rd.numcliente
inner join relevamientosporcliente rlc on rlc.idrelevamiento =
re.idrelevamiento and rlc.numcliente = rd.numcliente
where re.estado = 1 and (re.idsemana is null or re.idsemana =@semana )
and ru.estado = 1 and rd.estado = 1 and t.estado=1
and pp.estado = 1 and pk.estado=1 and p.estado= 1 and prs.estado=1
and cmp.estado= case when re.idrelevamiento = 2 then 1 else cmp.estado END
and v.estado=1 and kc.estado = 1 and bc.estado = 1
and k.estado=1 and pro.estado=1 and z.estado=1 and l.estado=1 and
rlc.estado = 1 --and par.estado = 1
and convert(varchar,ru.fechaalta ,112) <= convert(varchar,getdate() ,112)
and (convert(varchar,ru.fechabaja ,112) >= convert(varchar,getdate() ,112)
or ru.fechabaja is null )
and ru.iddia = @dia
and ((ru.idsemana is null ) or ( ru.idsemana = @semana ))
and p.estadoprecio = 1 and pk.estadoprecio =1 and pp.precio = 1
and re.idrelevamiento = 2
union
select ru.DNIrepo,ru.horaentrada ,ru.horasalida ,ru.idpdv,
ru.idruteo,rd.idruteodetalle,
rd.numcliente ,re.idrelevamiento, null as producto ,null as prodcomparativo
,psh.idshare as productoshare ,csh.idprodcomparativo as prodcomparativoshare
,case when psh.idsector is not null then psh.idsector else
j.idsectorgenerico END as sector,
null as stockminimo, null sectormixto, 2 as idmaymin
from ruteos ru
inner join ruteosdetallecliente rd on rd.idruteo = ru.idruteo
inner join tipocliente t on t.numcliente = rd.numcliente
inner join sharexpdv psh on psh.idpdv = ru.idpdv
inner join grpSHAREclientes j on j.idshare = psh.idshare and j.numcliente =
rd.numcliente
inner join competenciasSHARE csh on csh.idshare = psh.idshare
inner join personal prs on prs.DNIpersonal = ru.DNIrepo
inner join clientes cc on cc.idcliente = t.idcliente
inner join pdv v on v.idpv = ru.idpdv
inner join cadenasclientes kc on kc.idcadena =v.idcadena and kc.numcliente
= rd.numcliente
inner join pdvclientes bc on bc.idpv =ru.idpdv and bc.numcliente =
rd.numcliente
inner join cadenas k on k.idcadena = v.idcadena
inner join provincias pro on pro.idprovincia = v.idprovincia
inner join zonas z on z.idzona = v.idzona
inner join localidades l on l.idlocalidad = v.idlocalidad
left join partidos par on par.idpartido = v.idpartido
inner join diasderelevamiento re on re.iddia = ru.iddia and re.numcliente =
rd.numcliente
inner join relevamientosporcliente rlc on rlc.idrelevamiento =
re.idrelevamiento and rlc.numcliente = rd.numcliente
where re.estado = 1 and (re.idsemana is null or re.idsemana =@semana )
and ru.estado = 1 and rd.estado = 1 and t.estado = 1 and psh.estado= 1 and
j.estado=1 and csh.estado=1
and prs.estado=1 and cc.estado = 1 and v.estado=1 and kc.estado = 1 and
bc.estado = 1 and k.estado=1 and pro.estado=1
and z.estado=1 and l.estado=1 and rlc.estado=1
and convert(varchar,ru.fechaalta ,112) <= convert(varchar,getdate() ,112)
and (convert(varchar,ru.fechabaja ,112) >= convert(varchar,getdate() ,112)
or ru.fechabaja is null )
and ru.iddia = @dia and ((ru.idsemana is null ) or ( ru.idsemana =
@semana ))
and re.idrelevamiento = 3
open cursor_autocarga
fetch next from cursor_autocarga into
@DNIrepo,@horaentrada,@horasalida,@idpdv,@idruteo,@idruteodetalle,@numcliente,@idrelevamiento
,@idprodclte,@idprodcomp,@idshare,@idsharecomp,@idsector,@stockminimo,@pdvsiesmixto,@idmaymin
while @@fetch_status = 0 and @@error = 0
BEGIN
if not exists (select idcarga from cargas where idruteo =@idruteo and
convert(varchar,fechacorrespondecarga,112) = convert(varchar,getdate(),112)
and diacorrespondecarga = @dia )
BEGIN
insert into cargas
(estado,fechacorrespondecarga,diacorrespondecarga,DNIrepo,idpdv,horaentrada,horasalida,idruteo)
values
(1,getdate(),@dia,@DNIrepo,@idpdv,@horaentrada,@horasalida,@idruteo)
set @id= @@identity
END
else
BEGIN
select @id = idcarga from cargas where idruteo =@idruteo and
convert(varchar,fechacorrespondecarga,112) =
convert(varchar,getdate(),112)
and diacorrespondecarga = @dia
END
if @id > 0 and @@error = 0
BEGIN
if not exists (select numcliente from cargasdetalle where idcarga = @id
and numcliente = @numcliente and idruteodetalle = @idruteodetalle)
BEGIN
insert into cargasdetalle
(estado,idcarga,numcliente,idruteodetalle)values
(1,@id,@numcliente,@idruteodetalle)
set @iddetalle= @@identity
END
ELSE
BEGIN
select @iddetalle = idcargadetalle from cargasdetalle where idcarga = @id
and numcliente = @numcliente and idruteodetalle = @idruteodetalle
END
IF @iddetalle > 0 and @@error = 0
BEGIN
IF @idrelevamiento IS NOT NULL AND @@error = 0
BEGIN
if not exists (select idrelevamiento from tocacargar where
idcargadetalle = @iddetalle
and idrelevamiento = @idrelevamiento)
insert tocacargar (estado,idcargadetalle,idrelevamiento) values
(1,@iddetalle,@idrelevamiento)
if @idrelevamiento = 1 and @@error = 0
BEGIN
if not exists (select idcargastock from cargastock where idcargadetalle
= @iddetalle and idprodclte =@idprodclte)
insert cargastock
(estado,idcarga,idcargadetalle,idprodclte,stckcritico,idsector)
values (1,@id,@iddetalle,@idprodclte,@stockminimo,@idsector)
END
if @idrelevamiento = 4 and @@error = 0
BEGIN
if not exists (select idcargafacing from cargafacing
where idcargadetalle = @iddetalle and idprodclte =@idprodclte)
insert cargafacing
(estado,idcarga,idcargadetalle,idprodclte,idsector)
values (1,@id,@iddetalle,@idprodclte,@idsector)
END
if @idrelevamiento = 2 and @@error = 0
BEGIN
if not exists (select idcargaprecios from cargaprecios
where idcargadetalle = @iddetalle and idprodclte =@idprodclte --and
idpdvmaymin= @pdvsiesmixto
)
BEGIN
insert cargaprecios
(estado,idcarga,idcargadetalle,idprodclte,idsector,idpdvmaymin,idmaymin)
values
(1,@id,@iddetalle,@idprodclte,@idsector,@pdvsiesmixto,@idmaymin)
set @idcargaprecios =@@identity
END
ELSE
select @idcargaprecios = idcargaprecios from cargaprecios
where idcargadetalle = @iddetalle and idprodclte =@idprodclte --and
idpdvmaymin= @pdvsiesmixto
IF @idcargaprecios > 0 and @@error = 0 and @idprodcomp > 0
BEGIN
if not exists (select idpreciocomparativo from
cargaprecioscomparativos
where idcargaprecios = @idcargaprecios and idprodcomp = @idprodcomp)
insert into cargaprecioscomparativos
(estado,idcargaprecios,idprodcomp) values (1,@idcargaprecios,@idprodcomp)
END
END
if @idrelevamiento = 3 and @@error = 0
BEGIN
if not exists (select idcargashare from cargasshare
where idcargadetalle = @iddetalle and idshare=@idshare)
BEGIN
insert cargasshare (estado,idcarga,idcargadetalle,idshare,idsector)
values (1,@id,@iddetalle,@idshare,@idsector)

set @idcargaprecios=@@identity
END
ELSE
select @idcargaprecios = idcargashare from cargasshare
where idcargadetalle = @iddetalle and idshare=@idshare

IF @idcargaprecios > 0 and @@error = 0 and @idsharecomp > 0
BEGIN
if not exists( select @idcargaprecios from cargasharecompetencia where
idcargashare = @idcargaprecios and idprodcomparativo = @idsharecomp)
insert into cargasharecompetencia
(estado,idcargashare,idprodcomparativo)
values (1,@idcargaprecios,@idsharecomp)
END
END
END
END
END
fetch next from cursor_autocarga into
@DNIrepo,@horaentrada,@horasalida,@idpdv,@idruteo,@idruteodetalle,@numcliente,@idrelevamiento
,@idprodclte,@idprodcomp,@idshare,@idsharecomp,@idsector,@stockminimo,@pdvsiesmixto,@idmaymin
END
CLOSE cursor_autocarga
DEALLOCATE cursor_autocarga

"Carlos Sacristan" escribió en el mensaje de noticias
news:eknOvcg$
Bastante complicado ayudarte si no tenemos la definición de lo que hace
ese job ni de qué ejecuta el procedimiento almacenado.

¿Has mirado en el histórico del job, por si hubiera algún mensaje
indicativo de lo que ha podido ocurrir?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil. si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba
"Silvina" wrote in message
news:
Hola
Tengo un store procedure que al ejecutarlo desde el management studio
trabaja bien sin embargo cuando lo ejecuto desde el job, si bien no tira
error, no carga la tabla que debería cargar.

El job tiene 2 pasos, uno de ellos si carga bien, pero este otro no.

Alguien puede darme una pista de qué puede estar ocurriendo?
Desde ya muchas gracias.
Silvina



Respuesta Responder a este mensaje
#3 Silvina
06/07/2009 - 17:08 | Informe spam
Ese procedimiento almacenado funciona bien por sí mismo pero no si lo
ejecuto desde el job:
ya sea copiandolo en el job o llamandolo como exec procedimiento_almacenado
lo he probado en ambos casos como secuencia de comandos TSQL.
En historicos no aparece ningun error, sino por el contrario muestra que ha
completado cada paso correctamente.

Gracias
Silvina


"Carlos Sacristan" escribió en el mensaje de noticias
news:eknOvcg$
Bastante complicado ayudarte si no tenemos la definición de lo que hace
ese job ni de qué ejecuta el procedimiento almacenado.

¿Has mirado en el histórico del job, por si hubiera algún mensaje
indicativo de lo que ha podido ocurrir?

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil. si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba
"Silvina" wrote in message
news:
Hola
Tengo un store procedure que al ejecutarlo desde el management studio
trabaja bien sin embargo cuando lo ejecuto desde el job, si bien no tira
error, no carga la tabla que debería cargar.

El job tiene 2 pasos, uno de ellos si carga bien, pero este otro no.

Alguien puede darme una pista de qué puede estar ocurriendo?
Desde ya muchas gracias.
Silvina






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida