como agendar um trabalho para consulta SQL para ser executado diariamente?

Eu preciso saber como fazer uma consulta SQL executar diariamente usando um trabalho do SQL Server Agent, com configurações de configuração mínima exigida.

    1. Expanda o nó do SQL Server Agent e clique com o botão direito do mouse no nó Jobs no SQL Server Agent e selecione 'New Job'

    2. Na janela 'New Job' , insira o nome do trabalho e uma descrição na guia 'General' .

    3. Selecione 'Steps' no lado esquerdo da janela e clique em 'New' na parte inferior.

    4. Na janela 'Steps' , insira um nome de etapa e selecione o database no qual deseja que a consulta seja executada.

    5. Cole o comando T-SQL que você deseja executar na janela de comando e clique em 'OK' .

    6. Clique no menu 'Schedule' à esquerda da janela Novo trabalho e insira as informações da programação (por exemplo, diariamente e uma hora).

    7. Clique em 'OK' – e deve ser isso.

    (Há, claro, outras opções que você pode adicionar – mas eu diria que é o mínimo que você precisa para ter um trabalho configurado e agendado)

    Eu fiz um GIF animado dos passos na resposta aceita. Isso é do MSSQL Server 2012

    Agendar o trabalho SQL

    Para fazer isso no t-sql, você pode usar os seguintes stored procedures do sistema para agendar um trabalho diário. Este exemplo agenda diariamente às 1:00 da manhã. Consulte a ajuda da Microsoft para obter detalhes sobre a syntax dos stored procedures individuais e o intervalo 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 o T-SQL: Meu trabalho está executando um procedimento armazenado. Você pode facilmente mudar @command para executar o seu 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 ; 

    Aqui está um código de exemplo:

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

    se desejar backup diário // após o armazenamento de scripts sql em 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 o agendador de tarefas

    create task-> selecione a guia Triggers Selecione New .

    Botão Selecionar botão Daily Radio

    clique no botão Ok

    em seguida, clique na guia Action Selecione Novo.

    Botão Colocar "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql" no programa / checkbox de texto script (certifique-se de corresponder ao seu caminho de arquivos e colocar o caminho entre aspas duplas na checkbox de pesquisa start-> e se encontrar, em seguida, clique nele e veja o backup está lá ou não)

    – o caminho acima pode ser gravado 100 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"

    em seguida, clique no botão ok

    o script será executado no horário que você selecionar na guia Trigger diariamente

    Aproveite………….