2011-03-29 19 views
77

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.cómo programar un trabajo para que la consulta SQL se ejecute diariamente?

+0

qué versión de SQL Server está utilizando? – Faber

+0

Microsoft sql 2008 –

+0

Aquí hay una solución para la edición express: http://stackoverflow.com/a/7201189/259881 –

Respuesta

113
  1. Expandir el nodo Agente SQL Server y haga clic derecho en el nodo de Trabajo en Agente SQL Server y seleccione 'New Job'

  2. En la ventana 'New Job' escriba el nombre del trabajo y una descripción de la ficha 'General'.

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

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

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

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

  7. Haga clic en 'OK' - y así debería ser.

(Por supuesto, hay otras opciones que se pueden agregar - pero yo diría que es lo mínimo que necesita para ponerse en un puesto de trabajo y programada)

+0

¿cómo hacer eso en sql server express? ¿El agente viene con sql server express con servicios avanzados? –

+4

No hace falta decir que, dependiendo de con quién inicie sesión, es posible que no pueda ver el nodo del Agente SQL Server en absoluto ... No todo el mundo inicia sesión como sa. Más información (más bien seca) aquí .. http://msdn.microsoft.com/en-us/library/ms188283.aspx –

+0

si el nodo del Agente SQL Server no se puede expandir con la etiqueta "Agent XPs disabled", ejecute este código sp_configure 'mostrar opciones avanzadas', 1; GO RECONFIGURE; GO sp_configure 'Agent XPs', 1; GO GO RECONFIGURE Explicación está en este enlace: https://msdn.microsoft.com/en-us/library/ms178127.aspx –

0

Aquí está un ejemplo de código:

Exec sp_add_schedule 
    @schedule_name = N'SchedulName' 
    @freq_type = 1 
    @active_start_time = 08300 
+18

agregar una explicación de su código en su respuesta suele ser una buena idea (incluso si es evidente para usted). –

+0

Esta respuesta no contiene suficiente explicación. Sin suficiente explicación, los lectores no pueden entender esta respuesta. –

-2

si desea que backup diario // siguiente almacén secuencia de comandos 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 Triggers pestaña Seleccionar .

botón botón Seleccionar diaria Radio

clic Ok botón

continuación, haga clic en la pestaña Action seleccione 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 cuadro de texto del programa/script (asegúrese de ajuste de ruta de sus archivos y poner la ruta entre comillas dobles en la puesta en cuadro de búsqueda> y si se encuentra a continuación, haga clic en él y ver la copia de seguridad está allí o no)

- la ruta anterior puede ser insted 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"

continuación, haga clic en el botón OK

la secuencia de comandos se ejecutará en el tiempo que se selecciona en la pestaña Trigger en diario base

Disfrútalo .............

7

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 
    @[email protected]_name, 
    @enabled=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @[email protected], 
    @category_name=N'[Uncategorized (Local)]', 
    @[email protected]_login_name; 

-- Add server: 
EXEC msdb.dbo.sp_add_jobserver @[email protected]_name; 

-- Add step to execute SQL: 
EXEC msdb.dbo.sp_add_jobstep 
    @[email protected]_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', 
    @[email protected]_name, 
    @flags=0; 

-- Update job to set start step: 
EXEC msdb.dbo.sp_update_job 
    @[email protected]_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, 
    @[email protected], 
    @category_name=N'[Uncategorized (Local)]', 
    @[email protected]_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 
    @[email protected]_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 
12

hice un GIF animado de los pasos en la respuesta aceptada. Esto es de Servidor MSSQL 2012

Schedule SQL Job

Cuestiones relacionadas