Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   Crear un trabajo periódico (http://www.forosdelweb.com/f87/crear-trabajo-periodico-454831/)

Bravenap 08/01/2007 06:41

Crear un trabajo periódico
 
Muy buenas. He diseñado un procedimiento almacenado para limpiar registros de más de 6 meses de antigüedad. Me gustaría que este procedimiento almacenado se ejecutase, por ejemplo, una vez al día. He leido que esto se puede hacer con trabajos (jobs).

El problema radica en que sólo puedo acceder al servidor SQL a través de un proyecto de Access ADP. Se puede crear este trabajo automático con Transact-SQL al igual que hago para crear los procedimientos almacenados. ¿Cuál sería la sintaxis correcta?

Gracias y un saludo.

Mahalo 02/04/2007 02:23

Re: Crear un trabajo periódico
 
Hola.
He encontrado este tema porque yo también tengo el mismo problema, así que lo recupero y espero que alguien pase la solución.
Lo que intento es ejecutar un procedimiento almacenado desde un trabajo programado. Quiero que cada día se ejecute el procedimiento. A partir del Administrador corporativo de SQL Server creo un nuevo trabajo y en los comandos Transact-sql pongo la siguiente instrucción:
Código:

EXEC [nombre procedimiento]
No se ejecuta y me devuelve error en este paso.
¿Alguien sabe de qué va?
Gracias y saludos.

Mithrandir 02/04/2007 22:54

Re: Crear un trabajo periódico
 
Postear el error suele ser benéfico para los que intentan ayudarte....

Mahalo 03/04/2007 00:28

Re: Crear un trabajo periódico
 
"Error en el Paso 1".

De paso diré que el procedimiento almacenado se ejecuta bien de manera independiente. El fallo se produce con el trabajo programado.

Saludos.

Mahalo 05/04/2007 02:53

Re: Crear un trabajo periódico
 
Por si a alguien le sirve, el comando para ejecutar el procedimiento almacenado desde el trabajo programado es correcto.
Código:

EXEC [Nombre Proc.Alm.]
El caso es que, por alguna razón que desconozco, el procedimiento almacenado no se ejecuta de la misma manera que si lo hiciera independientemente. Así que he tenido que adaptarlo.
Saludos.

Bravenap 12/04/2007 00:53

Re: Crear un trabajo periódico
 
Gracias Mahalo por tu interés, pero me podrías responder a mi pregunta de cómo crear un trabajo sin tener acceso al "administrador corporativo" de SQL Server.

Un saludo.

Mithrandir 12/04/2007 13:26

Re: Crear un trabajo periódico
 
¿En qué DB está seleccionado el Job? (tiene un combo para elegir la DB sobre lacual se corre la sentencia)

También puede ser posible que las credenciales del SQL Server Agent no sean suficientes para ejecutar el SP que quieres. Eso revisalo en las propiedades del Agent.

Si no tienes el Enterprise Manager es probable que puedas instalar el Web Data Administrator: http://www.microsoft.com/downloads/d...displaylang=en

Mahalo 13/04/2007 00:22

Re: Crear un trabajo periódico
 
Todo está correctamente programado en el trabajo, incluso la base de datos y la tabla a la que apunta.
En mi caso, lo que fallaba (y por si alguna vez le puede servir a alguien) era una línea UPDATE en el procedimiento almacenado en la que actualizaba una fecha a la actual mediante GETDATE(). Lo que hice fue sacar esta función del CURSOR y declarar la variable @fecha_actual al principio del código del procedimiento almacenado.
Por alguna razón, esto fallaba:
Código:

DECLARE actualiza CURSOR FOR
  SELECT...
OPEN actualiza
FETCH NEXT FROM actualiza INTO ...
WHILE @@FETCH_STATUS = 0
BEGIN
  UPDATE tabla SET fecha = GETDATE() WHERE ....
FETCH NEXT FROM actualiza INTO ...
CLOSE actualiza
END

Simplemente declaré la variable @fecha_actual al principio y cambié la línea UPDATE.
Código:

DECLARE @fecha_actual datetime
...
...
  UPDATE tabla SET fecha = @fecha_actual WHERE ....

Saludos!!!

Mahalo 13/04/2007 02:56

Re: Crear un trabajo periódico
 
Respondiendo a Bravenat, y si no se ha descargado el Web Data Administrator que recomienda Mithrandir, he extraído esto del la ayuda de SQL Server.
Cita:

En este ejemplo se crea un trabajo denominado Ad hoc Sales Data Backup (copia de seguridad ad hoc de datos de ventas) que notifica a janetl (por medio de un mensaje emergente del localizador, de correo electrónico o de la red) si el trabajo no tiene éxito y elimina el trabajo al concluir con éxito.

USE msdb
EXEC sp_add_job @job_name = 'Ad hoc Sales Data Backup',
@enabled = 1,
@description = 'Ad hoc backup of sales data',
@owner_login_name = 'janet1',
@notify_level_eventlog = 2,
@notify_level_email = 2,
@notify_level_netsend = 2,
@notify_level_page = 2,
@notify_email_operator_name = 'janet1',
@notify_netsend_operator_name = 'janet1',
@notify_page_operator_name = 'janet1',
@delete_level = 1

Véase también

sp_add_jobschedule

sp_add_jobstep

sp_delete_job

sp_help_job

sp_help_jobstep

sp_update_job

Procedimientos almacenados del sistema

Investiga a partir de aquí, a ver qué tal.

Saludos!!


La zona horaria es GMT -6. Ahora son las 10:25.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.