una - ver consultas en ejecucion sql server
¿Cómo programar un trabajo para que la consulta SQL se ejecute diariamente? (6)
Necesito saber cómo hacer que una consulta sql se ejecute diariamente utilizando trabajos de agente de servidor sql con la configuración de configuración mínima requerida.
Expanda el nodo Agente de SQL Server y haga clic con el botón secundario en el nodo Trabajos en el Agente SQL Server y seleccione
''New Job''
En la ventana
''New Job''
, ingrese el nombre del trabajo y una descripción en la pestaña''General''
.Seleccione
''Steps''
en el lado izquierdo de la ventana y haga clic en''New''
en la parte inferior.En la ventana
''Steps''
, ingrese el nombre de un paso y seleccione la base de datos con la que desea ejecutar la consulta.Pegue en el comando T-SQL que desea ejecutar en la ventana de comandos y haga clic en
''OK''
.Haga clic en el menú
''Schedule''
a la izquierda de la ventana Nuevo trabajo e ingrese la información de la programación (p. Ej., Diariamente y una hora).Haga clic en
''OK''
, y así debería ser.
(Por supuesto, hay otras opciones que puede agregar, pero yo diría que es lo mínimo que necesita para configurar un trabajo y programarlo)
Aquí hay un código de muestra:
Exec sp_add_schedule
@schedule_name = N''SchedulName''
@freq_type = 1
@active_start_time = 08300
Para hacer esto en t-sql, puede usar 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
Usando T-SQL: Mi trabajo está ejecutando el 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
@active_start_time = ''230000'' ; -- start time 23:00:00
EXEC msdb.dbo.sp_attach_schedule
@job_name = N''MakeDailyJob'',
@schedule_name = N''Everyday schedule'' ;
si desea una copia de seguridad diaria // siguiendo el almacenamiento 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
abra el programador de tareas
crear tarea-> seleccionar pestaña Triggers
Seleccione New
.
Botón Seleccionar botón de radio diario
haga clic en el botón Ok
luego Action
clic en la pestaña Action
Selecciona Nuevo.
Botón Poner "C:/Program Files/Microsoft SQL Server/100/Tools/Binn/SQLCMD.EXE"
-S ADMIN-PC -i "C:/Users/admin/Desktop/DBScript/DBBackUpSQL.sql"
en el programa / cuadro de texto del script (asegúrese de Coincidir con la ruta de sus archivos y Ponga el doble de la ruta citada en el cuadro de inicio-> búsqueda y, si lo encuentra, haga clic en él y verá que la copia de seguridad está allí o no)
- la ruta anterior puede estar insted 100 write 90 "C:/Program Files/Microsoft SQL Server/90/Tools/Binn/SQLCMD.EXE" -S ADMIN-PC -i
"C:/Users/admin/Desktop/DBScript/DBBackUpSQL.sql"
luego haz clic en el botón Aceptar
el script se ejecutará a tiempo, que selecciona en la pestaña Trigger a diario
disfrútala.............