Создание и запуск заданий агента SQL Server в LinuxCreate and run SQL Server Agent jobs on Linux

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)  — LinuxПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) - Linux

Задания SQL Server используются для регулярного выполнения одинаковой последовательности команд в базе данных SQL Server.SQL Server jobs are used to regularly perform the same sequence of commands in your SQL Server database. В этом учебнике представлен пример создания задания агента SQL Server в Linux с помощью Transact-SQL и SQL Server Management Studio (SSMS).This tutorial provides an example of how to create a SQL Server Agent job on Linux using both Transact-SQL and SQL Server Management Studio (SSMS).

  • Установка агента SQL Server в LinuxInstall SQL Server Agent on Linux
  • Создание задания для выполнения ежедневного резервного копирования базы данныхCreate a new job to perform daily database backups
  • Планирование и запуск заданияSchedule and run the job
  • Выполнение тех же действий в SSMS (необязательно)Perform the same steps in SSMS (optional)

Известные проблемы с агентом SQL Server в Linux см. в заметках о выпуске.For known issues with SQL Server Agent on Linux, see the Release Notes.

предварительные требованияPrerequisites

Для работы с этим руководством необходимо выполнить следующие условия.The following prerequisites are required to complete this tutorial:

  • Компьютер Linux со следующими необходимыми компонентами:Linux machine with the following prerequisites:
    • SQL Server (RHEL, SLES или Ubuntu) с программами командной строки.SQL Server (RHEL, SLES, or Ubuntu) with command-line tools.

Следующие компоненты являются необязательными.The following prerequisites are optional:

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

Чтобы использовать агент SQL Server в Linux, нужно сначала включить его на компьютере, где уже установлен SQL Server.To use SQL Server Agent on Linux, you must first enable SQL Server Agent on a machine that already has SQL Server installed.

  1. Чтобы включить агент SQL Server, сделайте следующее.To enable SQL Server Agent, follow the step below.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true 
  1. Перезапустите SQL Server с помощью следующей команды.Restart SQL Server with the following command:
sudo systemctl restart mssql-server

Примечание

Начиная с версии SQL Server 2017 с накопительным пакетом обновления 4, агент SQL Server включается в пакет mssql-server и по умолчанию отключен.Starting with SQL Server 2017 CU4, SQL Server Agent is included with the mssql-server package and is disabled by default. Сведения о настройке агента в версиях, предшествующих накопительному пакету обновления 4, см. в статье Установка агента SQL Server в Linux.For Agent set up prior to CU4 visit, Install SQL Server Agent on Linux.

Создание образца базы данныхCreate a sample database

Чтобы создать образец базы данных с именем SampleDB, выполните указанные ниже действия.Use the following steps to create a sample database named SampleDB. Эта база данных используется для задания ежедневного резервного копирования.This database is used for the daily backup job.

  1. На компьютере Linux откройте сеанс терминала bash.On your Linux machine, open a bash terminal session.

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

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'CREATE DATABASE SampleDB'
    
  3. Убедитесь, что база данных создана, выведя список баз данных на сервере.Verify the database is created by listing the databases on your server.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'SELECT Name FROM sys.Databases'
    

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

Приведенные ниже шаги позволяют создать задание агента SQL Server в Linux с помощью команд Transact-SQL.The following steps create a SQL Server Agent job on Linux with Transact-SQL commands. Это задание выполняет ежедневное резервное копирование образца базы данных SampleDB.The job runs a daily backup of the sample database, SampleDB.

Совет

Для выполнения этих команд можно использовать любой клиент T-SQL.You can use any T-SQL client to run these commands. Например, в Linux можно использовать sqlcmd или Visual Studio Code.For example, on Linux you can use sqlcmd or Visual Studio Code. С удаленного сервера Windows Server вы также можете выполнять запросы в SQL Server Management Studio (SSMS) или использовать пользовательский интерфейс для управления заданиями, как описано в следующем разделе.From a remote Windows Server, you can also run queries in SQL Server Management Studio (SSMS) or use the UI interface for job management, which is described in the next section.

  1. Используйте sp_add_job для создания задания Daily SampleDB Backup.Use sp_add_job to create a job named 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.Call sp_add_jobstep to create a job step that creates a backup of the SampleDB database.

    -- 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.Then create a daily schedule for your job with 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.Attach the job schedule to the job with 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, чтобы назначить задание целевому серверу.Use sp_add_jobserver to assign the job to a target server. В этом примере целевым объектом является локальный сервер.In this example, the target is the local server.

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

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

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

Кроме того, с помощью SQL Server Management Studio (SSMS) в Windows можно удаленно создавать задания и управлять ими.You can also create and manage jobs remotely using SQL Server Management Studio (SSMS) on Windows.

  1. Запустите SSMS в Windows и подключитесь к своему экземпляру SQL Server в Linux.Start SSMS on Windows and connect to your Linux SQL Server instance. Дополнительные сведения см. в статье Управление SQL Server в Linux с помощью SSMS.For more information, see Manage SQL Server on Linux with SSMS.

  2. Убедитесь, чтобы создан образец базы данных с именем SampleDB.Verify that you have created a sample database named SampleDB.

    Create a SampleDB database
  3. Убедитесь, что агент SQL установлен и настроен правильно.Verify that SQL Agent was installed and configured correctly. Найдите знак "плюс" рядом с агентом SQL Server в обозревателе объектов.Look for the plus sign next to SQL Server Agent in the Object Explorer. Если агент SQL Server не включен, попробуйте перезапустить службу mssql-server в Linux.If SQL Server Agent is not enabled, try restarting the mssql-server service on Linux.

    Проверка установки агента SQL Server

  4. Создайте задание.Create a new job.

    Создание задания

  5. Присвойте заданию имя и создайте шаг задания.Give your job a name and create your job step.

    Создание шага задания

  6. Укажите подсистему, которую вы хотите использовать, и действие, которое должен выполнить шаг задания.Specify what subsystem you want to use and what the job step should do.

    Подсистема заданий

    Действие шага задания

  7. Создайте расписание задания.Create a new job schedule.

    расписание заданий;

    расписание заданий;

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

    Start the SQL Server Agent job

Next StepsNext Steps

В этом руководстве вы узнали, как выполнять следующие задачи:In this tutorial, you learned how to:

  • Установка агента SQL Server в LinuxInstall SQL Server Agent on Linux
  • Использование Transact-SQL и системных хранимых процедур для создания заданийUse Transact-SQL and system stored procedures to create jobs
  • Создание задания, выполняющего ежедневное резервное копирование базы данныхCreate a job that performs daily database backups
  • Использование пользовательского интерфейса SSMS для создания заданий и управления имиUse SSMS UI to create and manage jobs

Далее вы можете изучить другие возможности для создания заданий и управления ими.Next, explore other capabilities for creating and managing jobs: