Создание и запуск заданий агента 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.
Необходимые компоненты
Для работы с этим руководством необходимо выполнить следующие условия.
Компьютер Linux со следующими необходимыми компонентами:
Следующие компоненты являются необязательными.
- Компьютер Windows с SSMS:
- Скачайте SQL Server Management Studio (SSMS) для дополнительных шагов SSMS.
Включение агента SQL Server
Чтобы использовать агент SQL Server в Linux, нужно сначала включить его на компьютере, где уже установлен SQL Server.
Чтобы включить агент SQL Server, сделайте следующее.
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
Перезапустите SQL Server с помощью следующей команды.
sudo systemctl restart mssql-server
Примечание.
Начиная с SQL Server 2017 (14.x) CU 4, агент SQL Server входит в mssql-server
пакет и по умолчанию отключается. Сведения о настройке агента до накопительного пакета обновления 4 см. в разделе "Установка агент SQL Server в Linux".
Создание образца базы данных
Чтобы создать образец базы данных с именем SampleDB
, выполните следующие действия. Эта база данных используется для задания ежедневного резервного копирования.
На компьютере Linux откройте сеанс терминала bash.
Используйте sqlcmd для выполнения команды Transact-SQL
CREATE DATABASE
./opt/mssql-tools/bin/sqlcmd -S localhost -U SA -Q 'CREATE DATABASE SampleDB'
Убедитесь, что база данных создана, выведя список баз данных на сервере.
/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) или использовать пользовательский интерфейс для управления заданиями, как описано в следующем разделе.
Используйте 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
Вызовите 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
Затем создайте ежедневное расписание для задания с помощью 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
Подключите расписание задания к заданию с помощью 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
Используйте sp_add_jobserver, чтобы назначить задание целевому серверу. В этом примере целевым объектом является локальный сервер.
EXEC dbo.sp_add_jobserver @job_name = N'Daily SampleDB Backup', @server_name = N'(local)'; GO
Запустите задание с помощью sp_start_job.
EXEC dbo.sp_start_job N' Daily SampleDB Backup' ; GO
Создание задания с использованием SSMS
Кроме того, с помощью SQL Server Management Studio (SSMS) в Windows можно удаленно создавать задания и управлять ими.
Запустите SSMS в Windows и подключитесь к своему экземпляру SQL Server в Linux. Дополнительные сведения см. в статье "Использование СРЕДЫ SQL Server Management Studio в Windows для управления SQL Server на Linux".
Убедитесь, что вы создали пример базы данных с именем
SampleDB
.Убедитесь, что агент SQL был установлен агент SQL Server в Linux и настроен правильно. Найдите знак "плюс" рядом с агентом SQL Server в обозревателе объектов. Если агент SQL Server не включена, попробуйте перезапустить службу mssql-server в Linux.
Создать новую работу.
Присвойте заданию имя и создайте шаг задания.
Укажите подсистему, которую вы хотите использовать, и действие, которое должен выполнить шаг задания.
Создайте расписание задания.
Запустите ваше задание.
Следующий шаг
Из этого руководства вы узнали, как:
- Установка агента SQL Server в Linux
- Использование Transact-SQL и системных хранимых процедур для создания заданий
- Создание задания, выполняющего ежедневное резервное копирование базы данных
- Использование пользовательского интерфейса SSMS для создания заданий и управления ими
Далее вы можете изучить другие возможности для создания заданий и управления ими.