Sql server agent sql express 2018: How to create jobs in SQL Server Express edition
Содержание
Часто задаваемые вопросы и примеры об агенте SQL Server
Введение
В этой статье мы ответим на часто задаваемые вопросы об агенте SQL Server. Мы узнаем, как создать задание, кое-что об используемых внутренних таблицах, как планировать задания, добавлять задания PowerShell, задания cmd, задания T-SQL и многое другое.
В этой статье мы ответим на следующие вопросы:
- Что такое агент SQL Server?
- Включен ли агент SQL Server в SQL Server Express Edition?
- Как запланировать задачи в SQL Server Express Edition?
- Как запустить или перезапустить службу агента SQL?
- Как я могу создать простое задание для резервного копирования моей базы данных каждый день в 9 часов вечера?
- Как создать задание, которое выполняет командную строку (cmd)?
- Как проверить, не выполняется ли задание?
- Когда я выполняю команду в cmd, она работает нормально, но если я запускаю в агенте, происходит сбой. В чем может быть проблема?
- Можно ли запускать задания на нескольких серверах SQL?
- Как мы можем создавать оповещения с помощью агента SQL?
- Как мы можем отправлять электронные письма с помощью агента SQL?
- Где хранится информация об агенте SQL?
Требования
Во-первых, у нас будет установлен SQL Server. В этом примере я использую версию Developer Edition (выпуск SQL Server Express не включает агент SQL).
Начало работы
Что такое агент SQL Server?
Это компонент SQL Server, который позволяет планировать и программировать задания для автоматизации некоторых задач в SQL Server.
Включен ли агент SQL Server в SQL Server Express Edition?
Нет. SQL Server Express Edition — это бесплатная версия, в которую не входит агент SQL (поскольку он бесплатный).
Как запланировать задачи в SQL Server Express Edition?
Вы можете использовать планировщик заданий, включенный в Windows, и вызвать пакетный файл с вызовом sqlcmd с необходимой командой.
В следующем примере показан пакетный файл, который создает резервную копию базы данных SQL Server:
Сначала создайте сценарий с именем файла backup.sql с помощью команды резервного копирования:
РЕЗЕРВНАЯ БАЗА ДАННЫХ [testdb] НА ДИСК = N’C:\sql\test.bak’ |
Далее мы создадим файл с именем backup.bat для вызова скрипта в sqlcmd:
sqlcmd -S имя_сервера\SQLEXPRESS -E -i c:\sql\backup.sql -o c:\sql\output.txt |
Где sqlcmd — это командная строка, а -S используется для указания имени экземпляра SQL Server, -E используется для подключения с использованием текущей учетной записи Windows, а -i используется для указания входных данных, которые являются резервной копией сценария, а -o используется для показать результаты резервного копирования в файле с именем output.txt. Кроме того, вам нужно будет вызвать backup. bat в планировщике Windows.
Как запустить или перезапустить службу агента SQL?
Вы можете запустить службу агента SQL с помощью SQL Management Studio:
Также с помощью диспетчера конфигурации SQL Server:
Вы также можете использовать командную строку, используя следующую команду:
ЧИСТЫЙ ЗАПУСК SQLSERVERAGENT |
Как я могу создать простое задание для резервного копирования моей базы данных каждый день в 9 часов вечера?
Во-первых, вам нужно создать новое задание в агенте SQL Server и ввести имя и, возможно, описание. Затем перейдите на страницу шагов:
В шагах создайте новый шаг и добавьте следующую команду T-SQL для резервного копирования базы данных с именем testdb в файле test.bak:
РЕЗЕРВНАЯ БАЗА ДАННЫХ [testdb] НА ДИСК = N’C:\sql\test. bak’ |
Перейдите на страницу расписаний и нажмите новую кнопку:
Укажите любое имя для расписания и в типе расписания выберите повторяющееся и установите его для запуска ежедневно и в 21:00. Теперь у вас есть резервная копия, которую можно запускать ежедневно в 21:00.
Как создать задание, которое выполняет командную строку (cmd)?
Когда вы создаете новое задание и новый шаг (см. предыдущий вопрос, если вам нужны подробные шаги), вы можете вызвать командную строку Windows (cmd). Следующие параметры показывают, как создать локального пользователя Windows, а затем на втором этапе мы предоставим разрешения для базы данных на втором этапе T-SQL:
На шаге задания выполните эту команду:
сетевой пользователь japex mypwd /ADD |
Эта команда создает пользователя с именем japex и паролем mypwd.
На следующем шаге вы можете предоставить привилегии системного администратора пользователю japex:
СОЗДАТЬ ВХОД [МОЙ СЕРВЕР\japex] ИЗ WINDOWS С DEFAULT_DATABASE=[master] GO ИЗМЕНИТЬ РОЛЬ СЕРВЕРА [sysadmin] ДОБАВИТЬ УЧАСТНИКА [MYSERVER \japex] |
Как проверить, не выполняется ли задание?
Вы можете щелкнуть задание правой кнопкой мыши и просмотреть историю просмотров, чтобы узнать, когда оно не удалось и почему оно не выполнено:
Вы можете уточнить время и причины:
Когда я выполняю команду в cmd, она работает нормально, но если я запускаю команду в агенте, происходит сбой. В чем может быть проблема?
Типичной проблемой являются проблемы с разрешениями. Если у вас есть ошибка отказа в доступе в вашем задании агента SQL, вам могут потребоваться дополнительные привилегии для запуска задания.
По умолчанию агент SQL запускается с учетной записью SQLSERVERAGENT. У этой учетной записи нет прав администратора, у нее нет прав доступа к некоторым папкам и другим объектам Windows:
Быстрое решение — перейти к диспетчеру конфигурации SQL Server и изменить учетную запись на администратора или предоставить привилегии учетной записи SQLSERVERAGENT.
Однако из соображений безопасности не рекомендуется использовать учетную запись администратора для агента SQL Server, поскольку хакер или кто-то другой может использовать эту учетную запись для атаки на вашу ОС и ваш SQL Server.
Хорошей практикой является создание прокси. Во-первых, вам нужно будет создать учетные данные:
Укажите учетные данные администратора:
Теперь перейдите к агенту SQL Server, прокси, щелкните правой кнопкой мыши операционную систему (CmdExcec) и выберите «Новый прокси». Мы добавим прокси для выполнения задач cmd с большими привилегиями:
Также введите имя и выберите только что созданные учетные данные:
Наконец, на этапе задания запустите только что созданный прокси.
Можно ли выполнять задания на нескольких серверах SQL?
Да, в следующей статье показано, как запускать задания на нескольких серверах:
- Как выполнять задания на нескольких серверах SQL
Как мы можем создавать оповещения с помощью агента SQL?
В следующей статье показано, как создать
- Как создавать и настраивать оповещения агента SQL Server
Как мы можем отправлять электронные письма с помощью агента SQL?
В следующей статье показано, как работать с электронной почтой:
- Как настроить почту базы данных в SQL Server
Где хранится информация об агенте SQL?
Вся информация хранится в базе данных MSDB. Это системная база данных, в которой хранятся задания, шаги, операторы и вся связанная с ними информация.
Следующий запрос показывает, как получить все задания:
Выберите * из dbo sys. jobs |
Дополнительные сведения о базе данных msdb см. по этой ссылке:
Системные базы данных SQL Server — база данных msdb
Заключение
В заключение можно сказать, что SQL Agent очень помогает автоматизировать различные задачи и обладает большим функционалом.
- Автор
- Последние сообщения
Даниэль Кальбимонте
Даниэль Кальбимонте — Microsoft Most Valuable Professional, Microsoft Certified Trainer и Microsoft Certified IT Professional for SQL Server. Он опытный автор SSIS, преподаватель ИТ-академий и имеет более чем 13-летний опыт работы с различными базами данных.
Он работал на правительство, нефтяные компании, веб-сайты, журналы и университеты по всему миру. Дэниел также регулярно выступает на конференциях и в блогах, посвященных SQL Server. Он пишет учебные материалы по SQL Server для сертификационных экзаменов.
Он также помогает с переводом статей SQLShack на испанский язык
Просмотреть все сообщения Daniel Calbimonte
Последние сообщения Daniel Calbimonte (посмотреть все)
SQL Express = без агента
SQL Express = без агента
Одним из самых больших функциональных ограничений SQL Server Express является исключение
агент SQL. SQL Agent прекрасно работает не только для управления ETL, SSIS,
и техническое обслуживание на одном или нескольких серверах, но он также функционирует как общий
планировщик заданий. Он может выполнять любой сценарий PowerShell или командной строки, чтобы позаботиться о
любое количество процессов или заданий, которые могут быть на 100% внешними по отношению к SQL Server.
- Windows
- Linux
- Независимость от платформы
Windows
Планировщик заданий Windows
Без агента SQL параметр по умолчанию для управления резервным копированием и сценариями обслуживания в SQL Server Express недоступен. К счастью, одна из следующих лучших альтернатив бесплатна, включена в Windows.
и занимает очень мало времени для настройки. Войдите в планировщик заданий Windows!
Чтобы использовать планировщик задач, необходимо создать задачу, которая будет выполнять пакетный сценарий, содержащий код для запуска на экземпляре SQL Express. В этом примере это будет работа по техническому обслуживанию.
который будет выполняться еженедельно для обеспечения дефрагментации индексов в пользовательских базах данных.
настройки для задания обслуживания будут скопированы непосредственно из сценариев Ola для репликации
параметры, которые используются для создания задания, когда агент SQL доступен.
- Создание задачи с помощью графического интерфейса
- Создание задачи с помощью командной строки
Графический интерфейс планировщика заданий
Установите сценарии обслуживания Ola Hallengren (откроется в новом окне), если они еще не установлены. Может появиться сообщение о том, что SQLServerAgent не запущен при установке этих скриптов. Это ожидается, поскольку агент недоступен, но не повлияет на установку.
Создайте файл
.bat
для сценария sqlcmd, который будет запускать хранимую процедуру обслуживания: 9-Q «ВЫПОЛНИТЬ [dbo].[IndexOptimize] @Databases = ‘USER_DATABASES’, @LogToTable = ‘Y'» -b1
2Найдите «Планировщик заданий» в меню «Пуск», чтобы открыть планировщик
Щелкните правой кнопкой мыши «Планировщик заданий» и выберите «Создать базовое задание»
Введите имя и описание задачи.
Выберите недельный график или тот, который работает в зависимости от использования базы данных.
Выберите «Запустить программу» в качестве типа действия.
Вставьте созданный ранее файл
.bat
.Выполните тестовый запуск задания, чтобы убедиться, что оно работает должным образом.
Повторите описанные выше шаги для резервного копирования базы данных, проверки DBCC и другого обслуживания базы данных по мере необходимости.
Командная строка планировщика заданий
Использование планировщика заданий Windows из командной строки включает запуск schtasks.exe (открывается в новом окне) для планирования и настройки задач. 9-Q «ВЫПОЛНИТЬ [dbo].[IndexOptimize] @Databases = ‘USER_DATABASES’, @LogToTable = ‘Y'» -b
1
2
Замените значения заполнителей и запустите сценарий ниже, чтобы создать запланированное задание:
RU
задача будет выполняться как.RP
— Пароль для РУ. 100005TN
— Имя задачи.TR
— значение, указывающее путь и имя файла запускаемой задачи.MO
— Модификатор для добавления более тонкого контроля над расписанием:- МИНУТА: 1 — 1439 минут.
- ЕЖЕДНЕВНО: 1 — 365 дней.
- ЕЖЕНЕДЕЛЬНО: недели 1–52.
- ЕЖЕМЕСЯЧНО: 1–12 или ПЕРВЫЙ, ВТОРОЙ, ТРЕТИЙ, ЧЕТВЕРТЫЙ, ПОСЛЕДНИЙ и ПОСЛЕДНИЙ ДЕНЬ.
- ONEVENT: Строка запроса события XPath.
D
— значение, указывающее день недели для запуска задачи. Допустимые значения: ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС и для МЕСЯЧНЫХ расписаний 1–31 (дни месяца). Подстановочный знак ( * ) указывает все дни.M
— значение, указывающее месяцы года. По умолчанию первый день месяца. Допустимые значения: JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV и DEC. Подстановочный знак ( * ) указывает все месяцы. 9/TN SQLExpressMaintenance /TR C:\express_maintenance.bat1
2
Повторите описанные выше шаги для обработки резервных копий базы данных, проверок DBCC и другого обслуживания базы данных по мере необходимости.
Linux
При установке SQL Server Express в Linux можно использовать встроенный системный планировщик времени для запуска обслуживания и других задач SQL Server.
Установите сценарии обслуживания Ola Hallengren (открывается в новом окне), если они еще не установлены. : Может появиться сообщение о том, что SQLServerAgent не запущен при установке этих скриптов. Это ожидается, поскольку агент недоступен, но не повлияет на установку.
Создайте сценарий bash для выполнения процедуры обслуживания (назовем наш
sqlmaint.sh
):#!/bin/bash sqlcmd -E -S .\SQLEXPRESS -d мастер \ -Q "ВЫПОЛНИТЬ [dbo].[IndexOptimize] @Databases = 'USER_DATABASES', @LogToTable = 'Y'" -b
1
2
3Запланируйте запуск сценария через cron, открыв редактор cron из оболочки:
crontab -e
1
И добавление скрипта по расписанию:
00 23 * * * /bin/sqlmaint. sh # Запускать техническое обслуживание в 23:00 каждый день
1
Повторите вышеуказанные шаги для любых других задач, которые необходимо регулярно планировать.
Независимая от платформы
Airflow
Относительно новый продукт Airflow (opens new window) — это «платформа, созданная сообществом для программного создания, планирования и мониторинга рабочих процессов». Он поддерживается Apache, построен на Python и полностью бесплатен. Airflow произвел фурор в области инженерии данных и науки о данных из-за его относительной простоты в управлении и возможности настройки.
Хотя использование Airflow только для простых сценариев резервного копирования или обслуживания может быть излишним, если вам нужны другие запланированные рабочие процессы для SQL Server Express, это может подойти. Airflow потребует некоторых знаний Python, чтобы заставить все работать, но Airflow изначально включает в себя базовый хук для SQL Server (opens new window), который должен сделать базовую проверку концепции простой задачей.