Создание и запуск заданий агента 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.

    Create a SampleDB database
  3. Убедитесь, что агент SQL был установлен агент SQL Server в Linux и настроен правильно. Найдите знак "плюс" рядом с агентом SQL Server в обозревателе объектов. Если агент SQL Server не включена, попробуйте перезапустить службу mssql-server в Linux.

    Screenshot showing how to verify SQL Server Agent was installed.

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

    Screenshot showing how to create a new job.

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

    Screenshot showing how to create a job step.

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

    Screenshot showing job subsystem.

    Screenshot showing job step action.

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

    Screenshot of the New Job dialog box with the Schedules option highlighted and the New option called out.

    Screenshot of the New Job dialog box with the OK option called out.

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

    Screenshot showing how to Start the SQL Server Agent job.

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

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

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

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