2008-11-13 36 views

Respuesta

85

Sí, en MS SQL Server, puede crear trabajos programados. En SQL Management Studio, navegue hasta el servidor, luego expanda el elemento del Agente de SQL Server y finalmente la carpeta de Trabajos para ver, editar y agregar trabajos programados.

+1

Tan extraño para mí que esta respuesta ha recibido más votos ascendentes en el último año que en el tiempo entre 2008-2013. ¿Por qué es eso? – Jeb

+1

probablemente subió a la cima de los resultados de google ... – blackorchid

4

Usando Management Studio - es posible crear un trabajo (Agente SQL unter Server) un puesto de trabajo puede incluir varios pasos de secuencias de comandos T-SQL hasta Paquetes SSIS

Jeb fue más rápido;)

16

Sí, si usa el Agente SQL Server.

Abra su Administrador corporativo, y vaya a la carpeta de administración debajo de la instancia de SQL Server que le interese. Allí verá el Agente SQL Server, y debajo verá una sección de Trabajos.

Aquí puede crear un nuevo trabajo y verá una lista de pasos que deberá crear. Cuando crea un nuevo paso, puede especificar el paso para ejecutar realmente un procedimiento almacenado (escriba TSQL Script). Seleccione la base de datos y para la sección de comandos puesto en algo así como:

exec MyStoredProcedure

Esa es la visión general, después de vuelta aquí si necesita algún consejo adicional.

[de hecho pensé que podría obtener en primer lugar en este caso, ¡estaba muy equivocado :)]

6

Voy a añadir una cosa: donde estoy que solía tener un montón de puestos de trabajo por lotes que corrió todas las noches. Sin embargo, nos estamos alejando de eso para usar una aplicación cliente programada en las tareas programadas de Windows que inicia cada trabajo. Hay (al menos) tres razones para esto:

  1. Tenemos algunos programas de consola que deben ejecutarse todas las noches también. De esta forma, todas las tareas programadas pueden estar en un solo lugar. Por supuesto, esto crea un único punto de falla, pero si los trabajos de la consola no se ejecutan vamos a perder un día de trabajo al día siguiente de todos modos.
  2. El programa que inicia los trabajos captura mensajes de impresión y errores del servidor y los escribe en un registro de aplicación común para todos nuestros procesos por lotes. Hace que el registro desde el uso de los trabajos sql sea mucho más simple.
  3. Si alguna vez necesitamos actualizar el servidor (y esperamos hacerlo pronto) no tenemos que preocuparnos por cambiar de trabajo. Simplemente vuelva a señalar la aplicación una vez.

Es una aplicación corta de VB.Net: puedo publicar el código si a alguien le interesa.

+0

No, no necesito el código, solo una idea general. Muchas gracias. :) –

31

Si se está utilizando MS SQL Server Express Edition, entonces el Agente SQL Server no está disponible. Encontré la siguiente trabajado para todas las ediciones:

USE Master 
GO 

IF EXISTS(SELECT * 
      FROM sys.objects 
      WHERE object_id = OBJECT_ID(N'[dbo].[MyBackgroundTask]') 
      AND type in (N'P', N'PC')) 
    DROP PROCEDURE [dbo].[MyBackgroundTask] 
GO 

CREATE PROCEDURE MyBackgroundTask 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- The interval between cleanup attempts 
    declare @timeToRun nvarchar(50) 
    set @timeToRun = '03:33:33' 

    while 1 = 1 
    begin 
     waitfor time @timeToRun 
     begin 
      execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure]; 
     end 
    end 
END 
GO 

-- Run the procedure when the master database starts. 
sp_procoption @ProcName = 'MyBackgroundTask', 
       @OptionName = 'startup', 
       @OptionValue = 'on' 
GO 

Algunas notas:

+0

es este un proceso interminable, un ciclo infinito? ¿Esto se ejecutará todos los días en '03: 33: 33 '? –

7
Probablemente no

la respuesta que está buscando, pero me resulta más útil sólo tiene que utilizar Windows Server Task Scheduler

Se puede utilizar directamente el comando sqlcmd.exe -S "." -d YourDataBase -Q "exec SP_YourJob"

O incluso crea un archivo .bat. De modo que puede hacer doble clic en la tarea bajo demanda.

Esto también ha sido abordado en este HERE

2

Usted podría utilizar SQL Server Service Broker para crear mecanismo por encargo.

Idea (simplificado):

  1. escribir un procedimiento/gatillo almacenado que inicia una conversación (BEGIN DIALOG) como bucle de retorno (DE my_service A my_service) - obtener manejador de conversación

    DECLARE @dialog UNIQUEIDENTIFIER; 
    
    BEGIN DIALOG CONVERSATION @dialog 
         FROM SERVICE [name] 
         TO SERVICE  'name' 
         ...; 
    
  2. de inicio el temporizador de conversación

    DECLARE @time INT; 
    BEGIN CONVERSATION TIMER (@dialog) TIMEOUT = @time; 
    
  3. Después de una cantidad especificada de segundos, se enviará un mensaje a un servicio. Se pondrá en cola con la cola asociada.

    CREATE QUEUE queue_name WITH STATUS = ON, RETENTION = OFF 
          , ACTIVATION (STATUS = ON, PROCEDURE_NAME = <procedure_name> 
          , MAX_QUEUE_READERS = 20, EXECUTE AS N'dbo') 
           , POISON_MESSAGE_HANDLING (STATUS = ON) 
    
  4. El procedimiento ejecutará el código específico y el temporizador recuperable para volver a disparar.


puede encontrar solución completa al horno (T-SQL) escrito por Michał Gołoś llamada Task Scheduler

puntos clave del blog:

Pros:

  • Compatible con cada versión (de Express a Enterprise). El trabajo del Agente SQL Server no está disponible para SQL Server Express
  • Alcance al nivel de la base de datos.Se podría easiliy base de datos de movimiento con las tareas asociadas (especialmente cuando usted tiene que moverse alrededor de 100 puestos de trabajo de un entomo a otro) privilegios
  • bajos necesarios para ver/manipular tareas (nivel de base de datos)

distinción propuesta:

Agente SQL Server (mantenimiento):

  • copias de seguridad
  • índice/estadística reconstruya
  • replicación

programador de tareas (procesos de negocio):

  • eliminación de datos antiguos
  • preaggregations/nuevos cálculos cíclicos
  • desnormalización

Cómo configurarlo:

  • obtener el código fuente de la sección: "Haz pobrania" - Para descargar el (activación/creación de tsks esquema/tabla de configuración + disparadores + procedimiento almacenado intermediario) tabla de configuración/configuración de lo que se puede broker)
  • estableció [tsks].[tsksx_task_scheduler] para añadir nuevas tareas (los nombres de las columnas son auto-descriptiva, la tarea muestra incluyó)

Advertencia: blog está escrito en polaco, pero el código fuente asociado está en Inglés y es fácil de seguir.

Advertencia 2: Antes de usarlo, por favor asegúrese de que ha probado en entorno no productivo.

Cuestiones relacionadas