none
Ejecutar Store Procedure de manera simple RRS feed

  • Pregunta

  • Hola estimados,

    Tengo un store procedure en SQL y me gustaría saber cuál es la manera más simple para ejecutarlo.

    Se trata de un conjunto de tablas que se deben actualizar 1 vez al año, pero no se optará por el JOB debido a que la fecha de actualización nunca va a ser la misma. La idea es que sea lo menos complejo posible para que la actualización sea ejecutada por el cliente.

    Muchas gracias por la ayuda!
    lunes, 15 de agosto de 2016 15:04

Respuestas

  • André Pineda,

    Que una tarea se programe a una determinada fecha o cada cierto tiempo, no significa que la acción -que contiene la tarea- se deba ejecutar, es decir, puedes planificar que la tarea se ejecute a diario, sin embargo la acción validará si es el momento adecuado para efectuar cambios en la tabla:

    /*La acción se ejecutará posterior a 1 año del valor de la columna [Fecha]*/
    WHERE
    	DATEADD(YEAR, 1, Fecha) = CONVERT(date, GETDATE());
    
    /*La acción se ejecutará por cada año que pase sobre el valor de la columna [Fecha]*/
    WHERE
    	(DAY(Fecha) = DAY(GETDATE()))
    	AND (MONTH(Fecha) = MONTH(GETDATE()))
    	(YEAR(Fecha) < YEAR(GETDATE()));



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 15 de agosto de 2016 16:44
  • Hola André Pineda

    Puede crear un procedimiento almacenado que reciba parámetros. Entonces pasar los parámetros por su posición:

    EXEC Nombre_Procedimiento Parametro1, Parametro2;

    o mediante el nombre del parámetro:

    EXEC Nombre_Procedimiento @Fecha1='15/08/2016', @Fecha2='25/08/2016';

    Ahora, ¿quiénes son los usuarios? y ¿desde que mecanismo ejecutarán el procedimiento almacenado?. Lo ideal sería construir una interfaz de usuario que permita encapsular toda la funcionalidad y permitir sólo lo que el usuario debe suministrar. la interfaz puede ser algo sencillo de unas pocas horas de trabajo, pero seguramente evitará problemas graves.

    Si le ha servido la información, vote y proponga como respuesta.

    Saludos,



    Miguel Torres


    lunes, 15 de agosto de 2016 15:52
  • Si los usuarios no usaran directamente el managment del Sql Server, entonces lo único que lo puede ejecutar es una interfaz de usuario.
    lunes, 15 de agosto de 2016 20:01
  • Puedes programar tu el procedimiento almacenado con la complejidad que quieras y al usuario configurarle una tarea programada que ejecute el manualmente en el momento que desee...

    En función del día en el que lo ejecute ese procedimiento usaría una fecha u otra.

    Un saludo.

    martes, 16 de agosto de 2016 7:25
  • Cuando tengo que hacer este tipo de cosas y no quiero crear un interfaz de usuario, lo que hago es hacer un report que en función de un parámetro ejecute el procedimiento almacenado.  De esta forma, lo ejecutan los usuarios bajo demanda simplemente entrando en un report, incluso si el procedimiento devuelve algún tipo de información, la puedes pintar como parte del report.

    Espero que te sirva


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    martes, 16 de agosto de 2016 7:26
    Moderador

Todas las respuestas

  • Hola André Pineda

    Puede crear un procedimiento almacenado que reciba parámetros. Entonces pasar los parámetros por su posición:

    EXEC Nombre_Procedimiento Parametro1, Parametro2;

    o mediante el nombre del parámetro:

    EXEC Nombre_Procedimiento @Fecha1='15/08/2016', @Fecha2='25/08/2016';

    Ahora, ¿quiénes son los usuarios? y ¿desde que mecanismo ejecutarán el procedimiento almacenado?. Lo ideal sería construir una interfaz de usuario que permita encapsular toda la funcionalidad y permitir sólo lo que el usuario debe suministrar. la interfaz puede ser algo sencillo de unas pocas horas de trabajo, pero seguramente evitará problemas graves.

    Si le ha servido la información, vote y proponga como respuesta.

    Saludos,



    Miguel Torres


    lunes, 15 de agosto de 2016 15:52
  • André Pineda,

    Que una tarea se programe a una determinada fecha o cada cierto tiempo, no significa que la acción -que contiene la tarea- se deba ejecutar, es decir, puedes planificar que la tarea se ejecute a diario, sin embargo la acción validará si es el momento adecuado para efectuar cambios en la tabla:

    /*La acción se ejecutará posterior a 1 año del valor de la columna [Fecha]*/
    WHERE
    	DATEADD(YEAR, 1, Fecha) = CONVERT(date, GETDATE());
    
    /*La acción se ejecutará por cada año que pase sobre el valor de la columna [Fecha]*/
    WHERE
    	(DAY(Fecha) = DAY(GETDATE()))
    	AND (MONTH(Fecha) = MONTH(GETDATE()))
    	(YEAR(Fecha) < YEAR(GETDATE()));



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 15 de agosto de 2016 16:44
  • Si los usuarios no usaran directamente el managment del Sql Server, entonces lo único que lo puede ejecutar es una interfaz de usuario.
    lunes, 15 de agosto de 2016 20:01
  • Puedes programar tu el procedimiento almacenado con la complejidad que quieras y al usuario configurarle una tarea programada que ejecute el manualmente en el momento que desee...

    En función del día en el que lo ejecute ese procedimiento usaría una fecha u otra.

    Un saludo.

    martes, 16 de agosto de 2016 7:25
  • Cuando tengo que hacer este tipo de cosas y no quiero crear un interfaz de usuario, lo que hago es hacer un report que en función de un parámetro ejecute el procedimiento almacenado.  De esta forma, lo ejecutan los usuarios bajo demanda simplemente entrando en un report, incluso si el procedimiento devuelve algún tipo de información, la puedes pintar como parte del report.

    Espero que te sirva


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    martes, 16 de agosto de 2016 7:26
    Moderador