как запланировать ежедневное выполнение задания для sql-запроса?
Мне нужно знать, как заставить SQL-запрос выполняться ежедневно с помощью задания агента SQL Server с минимальными требуемыми параметрами конфигурации.
6 ответов:
разверните узел агент SQL Server и щелкните правой кнопкой мыши узел задания в Агенте SQL Server и выберите
'New Job'
на
для этого в T-SQL можно использовать следующие системные хранимые процедуры для планирования повседневной работы. Этот пример расписывает ежедневно в 1: 00 утра. Дополнительные сведения о синтаксисе отдельных хранимых процедур и допустимом диапазоне параметров см. в справке Майкрософт.
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
использование T-SQL: Моя работа-выполнение хранимой процедуры. Вы можете легко изменить
@command
для запуска 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 ;
вот пример кода:
Exec sp_add_schedule @schedule_name = N'SchedulName' @freq_type = 1 @active_start_time = 08300
если вы хотите ежедневное резервное копирование / / после хранения сценария sql в 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
откройте Планировщик заданий
создать задачу-> выберите
Triggers
tab SelectNew
.кнопка выбора ежедневного переключателя
клик
нажмите кнопку
Action
вкладка выберите Создать.Кнопка Put
"C:\Program Files\Microsoft SQL Server0\Tools\Binn\SQLCMD.EXE"
-S ADMIN-PC-i"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
в поле программа скрипт(убедитесь, что ваш матч путь к файлам и поместите путь с двойными кавычками в поле "пуск - > поиск", и если он найдет, нажмите на него и посмотрите, есть ли резервная копия или нет)-- выше путь может быть insted 100 написать 90
"C:\Program Files\Microsoft SQL Server\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i
"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"
затем нажмите кнопку OK
скрипт будет выполняться на время, которое вы выбираете на вкладке триггер на ежедневной основе
понравится.............