Создание и запуск заданий SQL Server Agent в Linux

Применимо к:SQL Server в Linux

Задания SQL Server используются для регулярного выполнения одной и той же последовательности команд в базе данных SQL Server. В этом руководстве приведен пример создания задания SQL Server Agent в Linux с помощью Transact-SQL и SQL Server Management Studio (SSMS).

  • Установка SQL Server Agent в Linux
  • Создание задания для выполнения ежедневного резервного копирования базы данных
  • Планирование и запуск задания
  • Выполнение тех же действий в SSMS (необязательно)

Известные проблемы с SQL Server Agent в Linux см. в разделе SQL Server on Linux: известные проблемы.

Предварительные условия

Для работы с этим руководством необходимо выполнить следующие условия.

Следующие компоненты являются необязательными.

Включить SQL Server Agent

Чтобы использовать SQL Server Agent в Linux, необходимо сначала включить SQL Server Agent на компьютере, на котором уже установлен SQL Server.

  1. Чтобы включить SQL Server Agent, выполните следующую команду.

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
    
  2. Перезапустите SQL Server с помощью следующей команды:

    sudo systemctl restart mssql-server
    

Примечание.

Начиная с SQL Server 2017 (14.x) CU 4, SQL Server Agent входит в пакет mssql-server и по умолчанию отключен. Для настройки агента перед CU 4, см. в Install SQL Server Agent on Linux.

Создание образца базы данных

Чтобы создать образец базы данных с именем SampleDB, выполните следующие действия. Эта база данных используется для задания ежедневного резервного копирования.

  1. На компьютере Linux откройте сеанс терминала bash.

  2. Используйте sqlcmd для выполнения команды Transact-SQL CREATE DATABASE.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'CREATE DATABASE SampleDB'
    
  3. Убедитесь, что база данных создана, выведя список баз данных на сервере.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -Q 'SELECT name FROM sys.databases'
    

Создание задания с помощью Transact-SQL

Ниже описано, как создать задание SQL Server Agent в Linux с командами Transact-SQL. Задание выполняет ежедневное резервное копирование примера базы данных. SampleDB

Совет

Для выполнения этих команд можно использовать любой клиент T-SQL. Например, в Linux можно использовать установить средства командной строки sqlcmd и bcp SQL Server на Linux или расширение SQL Server для Visual Studio Code. Из удаленного Windows Server можно также выполнять запросы в SQL Server Management Studio (SSMS) или использовать интерфейс пользовательского интерфейса для управления заданиями, описанный в следующем разделе.

  1. Используйте sp_add_job для создания задания с именем Daily SampleDB Backup.

    -- Adds a new job executed by the SQLServerAgent service
    -- called 'Daily SampleDB Backup'
    USE msdb;
    GO
    
    EXECUTE dbo.sp_add_job @job_name = N'Daily SampleDB Backup';
    GO
    
  2. Вызовите sp_add_jobstep для создания шага задания, создающего резервную копию SampleDB базы данных.

    EXECUTE sp_add_jobstep
        @job_name = N'Daily SampleDB Backup',
        @step_name = N'Backup database',
        @subsystem = N'TSQL',
        @command = N'BACKUP DATABASE SampleDB TO DISK = \
                         N''/var/opt/mssql/data/SampleDB.bak'' WITH NOFORMAT, NOINIT, \
                         NAME = ''SampleDB-full'', SKIP, NOREWIND, NOUNLOAD, STATS = 10', @retry_attempts = 5, @retry_interval = 5;
    GO
    
  3. Затем создайте ежедневное расписание для задания, используя sp_add_schedule.

    -- Creates a schedule called 'Daily'
    EXECUTE dbo.sp_add_schedule
        @schedule_name = N'Daily SampleDB',
        @freq_type = 4,
        @freq_interval = 1,
        @active_start_time = 233000;
    
    USE msdb;
    GO
    
  4. Присоедините расписание задания к заданию с помощью sp_attach_schedule.

    -- Sets the 'Daily' schedule to the 'Daily SampleDB Backup' Job
    EXECUTE sp_attach_schedule
        @job_name = N'Daily SampleDB Backup',
        @schedule_name = N'Daily SampleDB';
    GO
    
  5. Используйте sp_add_jobserver , чтобы назначить задание целевому серверу. В этом примере целевым объектом является локальный сервер.

    EXECUTE dbo.sp_add_jobserver
        @job_name = N'Daily SampleDB Backup',
        @server_name = N'(local)';
    GO
    
  6. Запустите задание с sp_start_job.

    EXECUTE dbo.sp_start_job N' Daily SampleDB Backup';
    GO
    

Создание задания с использованием SSMS

Вы также можете удаленно создавать задания и управлять ими с помощью SQL Server Management Studio (SSMS) на Windows.

  1. Запустите SSMS на Windows и подключитесь к экземпляру SQL Server Linux. Дополнительную информацию можно найти в разделе Использование SQL Server Management Studio на Windows для управления SQL Server на Linux.

  2. Убедитесь, что вы создали пример базы данных с именем SampleDB.

    Снимок экрана: создание базы данных SampleDB.

  3. Убедитесь, что Агент SQL Server Установлен агент SQL Server в Linux и настроен правильно. Найдите знак плюса рядом с SQL Server Agent в Object Explorer. Если SQL Server Agent не включено, попробуйте перезапустить службу mssql-server в Linux.

    Скриншот, показывающий, как проверить, что SQL Server Agent установлен.

  4. Создать новую работу.

    Снимок экрана: создание нового задания.

  5. Присвойте заданию имя и создайте шаг задания.

    Снимок экрана, показывающий процесс создания шага задания.

  6. Укажите подсистему, которую вы хотите использовать, и действие, которое должен выполнить шаг задания.

    Снимок экрана: диалоговое окно

    Снимок экрана: диалоговое окно

  7. Создайте новое расписание задачи.

    Снимок экрана диалогового окна

    Снимок экрана: диалоговое окно

  8. Начните задание.

    Скриншот, показывающий, как запустить задание SQL Server Agent.

Следующий шаг

Из этого руководства вы узнали, как:

  • Установка SQL Server Agent в Linux
  • Создание заданий с помощью Transact-SQL и системных хранимых процедур
  • Создание задания, выполняющего ежедневное резервное копирование базы данных
  • Использование пользовательского интерфейса SSMS для создания заданий и управления ими

Далее вы можете изучить другие возможности для создания заданий и управления ими.