¿Cómo puedo programar un trabajo para ejecutar una consulta SQL diariamente?

Resuelto Bobj-C asked hace 13 años • 6 respuestas

Necesito saber cómo hacer que una consulta SQL se ejecute diariamente usando un trabajo del Agente SQL Server, con los ajustes de configuración mínimos requeridos.

Bobj-C avatar Mar 29 '11 17:03 Bobj-C
Aceptado
  1. Expanda el nodo del Agente SQL Server y haga clic derecho en el nodo Trabajos en el Agente SQL Server y seleccione'New Job'

  2. En la 'New Job'ventana ingrese el nombre del trabajo y una descripción en la 'General'pestaña.

  3. Seleccione 'Steps'en el lado izquierdo de la ventana y haga clic 'New'en la parte inferior.

  4. En la 'Steps'ventana, ingrese el nombre de un paso y seleccione la base de datos en la que desea ejecutar la consulta.

  5. Pegue el comando T-SQL que desea ejecutar en la ventana Comando y haga clic en 'OK'.

  6. Haga clic en el 'Schedule'menú a la izquierda de la ventana Nuevo trabajo e ingrese la información del horario (por ejemplo, diariamente y una hora).

  7. Haga clic 'OK', y eso debería ser todo.

(Por supuesto, hay otras opciones que puede agregar, pero yo diría que es lo mínimo que necesita para configurar y programar un trabajo)

L-Note avatar Mar 29 '2011 11:03 L-Note

Hice un GIF animado de los pasos de la respuesta aceptada. Esto es de MSSQL Server 2012.

Programar trabajo SQL

S.Mason avatar Aug 14 '2017 14:08 S.Mason

Para hacer esto en t-sql, puede utilizar los siguientes procedimientos almacenados del sistema para programar un trabajo diario. Este ejemplo programa diariamente a la 1:00 a.m. Consulte la ayuda de Microsoft para obtener detalles sobre la sintaxis de los procedimientos almacenados individuales y el rango válido de parámetros.

DECLARE @job_name NVARCHAR(128), @description NVARCHAR(512), @owner_login_name NVARCHAR(128), @database_name NVARCHAR(128);

SET @job_name = N'Some Title';
SET @description = N'Periodically do something';
SET @owner_login_name = N'login';
SET @database_name = N'Database_Name';

-- Delete job if it already exists:
IF EXISTS(SELECT job_id FROM msdb.dbo.sysjobs WHERE (name = @job_name))
BEGIN
    EXEC msdb.dbo.sp_delete_job
        @job_name = @job_name;
END

-- Create the job:
EXEC  msdb.dbo.sp_add_job
    @job_name=@job_name, 
    @enabled=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @description=@description, 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=@owner_login_name;

-- Add server:
EXEC msdb.dbo.sp_add_jobserver @job_name=@job_name;

-- Add step to execute SQL:
EXEC msdb.dbo.sp_add_jobstep
    @job_name=@job_name,
    @step_name=N'Execute SQL', 
    @step_id=1, 
    @cmdexec_success_code=0, 
    @on_success_action=1, 
    @on_fail_action=2, 
    @retry_attempts=0, 
    @retry_interval=0, 
    @os_run_priority=0, 
    @subsystem=N'TSQL', 
    @command=N'EXEC my_stored_procedure; -- OR ANY SQL STATEMENT', 
    @database_name=@database_name, 
    @flags=0;

-- Update job to set start step:
EXEC msdb.dbo.sp_update_job
    @job_name=@job_name, 
    @enabled=1, 
    @start_step_id=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @description=@description, 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=@owner_login_name, 
    @notify_email_operator_name=N'', 
    @notify_netsend_operator_name=N'', 
    @notify_page_operator_name=N'';

-- Schedule job:
EXEC msdb.dbo.sp_add_jobschedule
    @job_name=@job_name,
    @name=N'Daily',
    @enabled=1,
    @freq_type=4,
    @freq_interval=1, 
    @freq_subday_type=1, 
    @freq_subday_interval=0, 
    @freq_relative_interval=0, 
    @freq_recurrence_factor=1, 
    @active_start_date=20170101, --YYYYMMDD
    @active_end_date=99991231, --YYYYMMDD (this represents no end date)
    @active_start_time=010000, --HHMMSS
    @active_end_time=235959; --HHMMSS
Doug Lampe avatar Jun 08 '2017 21:06 Doug Lampe

Usando T-SQL: Mi trabajo es ejecutar un procedimiento almacenado. Puede cambiar fácilmente @commandpara ejecutar su sql.

EXEC msdb.dbo.sp_add_job  
   @job_name = N'MakeDailyJob',   
   @enabled = 1,   
   @description = N'Procedure execution every day' ; 

 EXEC msdb.dbo.sp_add_jobstep  
    @job_name = N'MakeDailyJob',   
    @step_name = N'Run Procedure',   
    @subsystem = N'TSQL',   
    @command = 'exec BackupFromConfig';

 EXEC msdb.dbo.sp_add_schedule  
    @schedule_name = N'Everyday schedule',   
    @freq_type = 4,  -- daily start
    @freq_interval = 1,
    @active_start_time = '230000' ;   -- start time 23:00:00

 EXEC msdb.dbo.sp_attach_schedule  
   @job_name = N'MakeDailyJob',  
   @schedule_name = N'Everyday schedule' ;

 EXEC msdb.dbo.sp_add_jobserver  
   @job_name = N'MakeDailyJob',  
   @server_name = @@servername ;
efysis avatar Apr 26 '2018 09:04 efysis

si desea una copia de seguridad diaria // siguiendo el almacén de scripts SQL en C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql

DECLARE @pathName NVARCHAR(512),
 @databaseName NVARCHAR(512) SET @databaseName = 'Databasename' SET @pathName = 'C:\DBBackup\DBData\DBBackUp' + Convert(varchar(8), GETDATE(), 112) + '_' + Replace((Convert(varchar(8), GETDATE(), 108)),':','-')+ '.bak' BACKUP DATABASE @databaseName TO DISK = @pathName WITH NOFORMAT, 
INIT, 
NAME = N'', 
SKIP, 
NOREWIND, 
NOUNLOAD, 
STATS = 10 
GO

abrir el programador de tareas

crear tarea-> seleccionar Triggerspestaña Seleccionar New.

Botón Seleccionar botón de radio diario

haga clic Oken el botón

luego haga clic en Actionla pestaña Seleccionar nuevo.

Botón Coloque "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"en el cuadro de texto del programa/script (asegúrese de hacer coincidir la ruta de sus archivos y coloque la ruta entre comillas dobles en inicio-> cuadro de búsqueda y, si lo encuentra, haga clic en él y vea si la copia de seguridad está allí o no). )

-- la ruta anterior puede estar insertada en 100, escribe 90"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"

luego haga clic en el botón Aceptar

el script se ejecutará a tiempo, lo que seleccione en la pestaña Activador diariamente

disfrútala.............

pravin Dukare avatar Sep 19 '2014 11:09 pravin Dukare