Preciso saber como fazer uma consulta SQL ser executada diariamente usando um trabalho do SQL Server Agent, com as definições de configuração mínimas necessárias.
Preciso saber como fazer uma consulta SQL ser executada diariamente usando um trabalho do SQL Server Agent, com as definições de configuração mínimas necessárias.
Respostas:
Expanda o nó do SQL Server Agent e clique com o botão direito do mouse no nó Trabalhos no SQL Server Agent e selecione 'New Job'
Na 'New Job'
janela, digite o nome do trabalho e uma descrição na 'General'
guia.
Selecione 'Steps'
no lado esquerdo da janela e clique 'New'
na parte inferior.
Na 'Steps'
janela, insira um nome de etapa e selecione o banco de dados no qual deseja que a consulta seja executada.
Cole o comando T-SQL que deseja executar na janela Comando e clique em 'OK'
.
Clique no 'Schedule'
menu à esquerda da janela Novo Trabalho e insira as informações de programação (por exemplo, diariamente e um horário).
Clique 'OK'
- e deve ser isso.
(Existem, é claro, outras opções que você pode adicionar - mas eu diria que é o mínimo necessário para configurar e programar um trabalho)
Para fazer isso em t-sql, você pode usar os seguintes procedimentos armazenados do sistema para agendar um trabalho diário. Este exemplo é programado diariamente à 1h. Consulte a ajuda da Microsoft para obter detalhes sobre a sintaxe dos procedimentos armazenados 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 T-SQL: Meu trabalho está executando o procedimento armazenado. Você pode alterar facilmente @command
para executar 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 exemplo de código:
Exec sp_add_schedule
@schedule_name = N'SchedulName'
@freq_type = 1
@active_start_time = 08300
se você quiser backup diário // seguinte armazenamento de script 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
criar tarefa-> selecionar Triggers
guia Selecionar New
.
Botão Selecionar botão de rádio diário
clique no Ok
botão
em seguida, clique na Action
guia Selecionar novo.
Botão Coloca "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"
-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
na caixa de texto do programa / script (certifique-se de que corresponda ao caminho dos seus arquivos e coloque o caminho entre aspas em iniciar-> caixa de pesquisa e se encontrar, clique nele e veja se o backup está lá ou não )
- o caminho acima pode ser instado 100 gravação 90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i
"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
então clique no botão ok
o Script será executado na hora que você selecionar na guia Trigger diariamente
Aproveite.............