Поделиться через


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

Область применения: SQL Server — Linux

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

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

Известные проблемы с агент SQL Server в Linux см. в заметках о выпуске SQL Server 2017 в Linux.

Необходимые компоненты

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

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

Включение агента SQL Server

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

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

    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 входит в mssql-server пакет и по умолчанию отключается. Сведения о настройке агента до накопительного пакета обновления 4 см. в разделе "Установка агент SQL Server в 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 в Linux с помощью команд Transact-SQL. Задание выполняет ежедневное резервное копирование примера базы данных. SampleDB

Совет

Для выполнения этих команд можно использовать любой клиент T-SQL. Например, в Linux можно установить средства командной строки SQL Server sqlcmd и bcp в 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
    EXEC dbo.sp_add_job
       @job_name = N'Daily SampleDB Backup';
    GO
    
  2. Вызовите sp_add_jobstep, чтобы создать шаг задания, создающий резервную копию базы данных SampleDB.

    -- Adds a step (operation) to the job
    EXEC 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'
    EXEC 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
    EXEC sp_attach_schedule
       @job_name = N'Daily SampleDB Backup',
       @schedule_name = N'Daily SampleDB';
    GO
    
  5. Используйте sp_add_jobserver, чтобы назначить задание целевому серверу. В этом примере целевым объектом является локальный сервер.

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

    EXEC 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 был установлен агент SQL Server в Linux и настроен правильно. Найдите знак "плюс" рядом с агентом SQL Server в обозревателе объектов. Если агент SQL Server не включена, попробуйте перезапустить службу mssql-server в Linux.

    Снимок экрана: проверка установки агент SQL Server.

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

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

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

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

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

    Снимок экрана: подсистема заданий.

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

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

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

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

  8. Запустите ваше задание.

    Снимок экрана: запуск задания агент SQL Server.

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

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

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

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