Как планировать работу для SQL-запроса для ежедневной работы?

Мне нужно знать, как каждый раз запускать SQL-запрос, используя задания агента sql-сервера с минимальными требуемыми настройками конфигурации.

Ответ 1

  • Разверните агент SQL Server node и щелкните правой кнопкой мыши Jobs node в агенте SQL Server и выберите 'New Job'

  • В окне 'New Job' введите имя задания и описание на вкладке 'General'.

  • Выберите 'Steps' в левой части окна и нажмите 'New' внизу.

  • В окне 'Steps' введите имя шага и выберите базу данных, к которой вы хотите выполнить запрос.

  • Вставьте команду T-SQL, которую вы хотите запустить в окне командной строки, и нажмите 'OK'.

  • Нажмите на 'Schedule' меню слева от окна New Job и введите информацию о расписании (например, ежедневно и время).

  • Нажмите 'OK' - и это должно быть.

(Есть, конечно, другие варианты, которые вы можете добавить - но я бы сказал, что это минимальный минимум, который вам нужно, чтобы настроить работу и запланировать)

Ответ 2

Я сделал анимированный GIF шагов в принятом ответе. Это от MSSQL Server 2012

Запланировать SQL-задание

Ответ 3

Чтобы сделать это в t-sql, вы можете использовать следующие системные хранимые процедуры для планирования ежедневной работы. Этот пример запланирован ежедневно в 1:00. Подробную информацию о синтаксисе отдельных хранимых процедур и допустимый диапазон параметров см. В справке Microsoft.

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

Ответ 4

Вот пример кода:

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

Ответ 5

если вы хотите ежедневное резервное копирование//после sql script сохранить в 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 Выбрать New.

Кнопка "Ежедневная радиокамера"

нажмите Ok Кнопка

затем нажмите вкладку Action. Выберите "Создать".

Кнопка

Поместите "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql" в текстовое поле программы /script (убедитесь, что сопоставлен путь к файлам и поместите двойной кавычек в поле start- > search, и если он найдет затем щелкните его и посмотрите, есть ли резервная копия)

- вышеуказанный путь может быть установлен 100 пишут 90 "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"

затем нажмите кнопку ok

script будет выполняться вовремя, которое вы выбираете на вкладке Триггер ежедневно

наслаждайтесь этим.............