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.
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.
Respuestas:
Expanda el nodo del Agente SQL Server y haga clic con el botón derecho en el nodo Trabajos en el Agente SQL Server y seleccione 'New Job'
En la 'New Job'
ventana ingrese el nombre del trabajo y una descripción en la 'General'
pestaña.
Seleccione 'Steps'
en el lado izquierdo de la ventana y haga clic 'New'
en la parte inferior.
En la 'Steps'
ventana, ingrese un nombre de paso y seleccione la base de datos en la que desea que se ejecute la consulta.
Pegue el comando T-SQL que desea ejecutar en la ventana de comandos y haga clic en 'OK'
.
Haga clic en el 'Schedule'
menú a la izquierda de la ventana Nuevo trabajo e ingrese la información del programa (por ejemplo, diariamente y una hora).
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)
Para hacer esto en t-sql, puede usar los siguientes procedimientos almacenados del sistema para programar un trabajo diario. Este ejemplo programa todos los días a la 1:00 AM. 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
Usando T-SQL: Mi trabajo está ejecutando un procedimiento almacenado. Puede cambiar fácilmente @command
para 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 ;
Aquí tienes un código de muestra:
Exec sp_add_schedule
@schedule_name = N'SchedulName'
@freq_type = 1
@active_start_time = 08300
si desea una copia de seguridad diaria // siguiendo la tienda 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
abre el programador de tareas
crear tarea-> seleccionar Triggers
pestaña Seleccionar New
.
Botón Seleccionar el botón de opción diario
haga clic en el Ok
botón
luego haga clic en la Action
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 que coincida con la ruta de sus archivos y coloque la ruta entre comillas dobles en inicio-> cuadro de búsqueda y, si encuentra, haga clic en él y vea que la copia de seguridad está allí o no )
- la ruta anterior se puede insertar 100 escribir 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
la secuencia de comandos se ejecutará a tiempo que seleccione en la pestaña Disparador diariamente
disfrútala.............