База данных msdb
msdb — это системная база данных в составе СУБД Microsoft SQL Server, предназначенная для хранения служебной информации, связанной с планированием задач (агент SQL Server), резервным копированием и восстановлением, оперативной репликацией, а также с историей выполнения операций и обслуживания сервера. Относится к числу системных баз данных, наряду с master, model, tempdb и Resource.
Назначение и роль
Основная функция msdb — обеспечение работы компонента SQL Server Agent (агент SQL Server), который отвечает за автоматизацию административных задач. В этой базе хранятся:
- Определения заданий (jobs), их расписания (schedules), шаги (job steps) и уведомления (notifications).
- Истории выполнения заданий и операторов (operators) — получателей уведомлений.
- Информация об операциях резервного копирования и восстановления, включая историю и медиа-наборы.
- Данные о планах обслуживания (maintenance plans) и их выполнении.
- Параметры репликации (если репликация настроена на сервере).
- Сведения о почтовых профилях Database Mail.
- Записи о событиях, записанных в журнал SQL Server (например, через sp_add_alert).
Таким образом, msdb служит центральным хранилищем метаданных для автоматизации, мониторинга и администрирования экземпляра SQL Server.
Структура и содержимое
База данных msdb состоит из множества системных таблиц, представлений и хранимых процедур, разделённых по функциональным областям. Основные группы объектов:
### Таблицы агента SQL Server
- sysjobs — содержит определения всех заданий.
- sysjobsteps — шаги заданий (команды T-SQL, PowerShell, ActiveX и др.).
- sysschedules — расписания запуска заданий.
- sysjobhistory — история выполнения заданий.
- sysoperators — операторы (получатели уведомлений по электронной почте, пейджеру или через net send).
### Таблицы резервного копирования и восстановления
- backupset — информация о каждом наборе резервных копий (тип, дата, размер, устройство).
- backupmediafamily — сведения о файлах или устройствах, на которые записана резервная копия.
- backupfile — перечень файлов данных и журналов, включённых в резервную копию.
- restorehistory — история операций восстановления.
### Таблицы Database Mail
- sysmail_mailitems — отправленные и ожидающие отправки сообщения.
- sysmail_log — журнал работы Database Mail.
- sysmail_principalprofile — привязка профилей к пользователям.
### Таблицы планов обслуживания
- sysmaintplan_plans — определения планов обслуживания.
- sysmaintplan_subplans — подпланы (наборы задач).
- sysmaintplan_log — журнал выполнения планов обслуживания.
### Таблицы репликации
- MSreplication_options — глобальные параметры репликации.
- MSagent_parameters — параметры агентов репликации.
- MSdistribution_agents — информация об агентах распространения.
История и развитие
База данных msdb появилась в SQL Server 6.5 (1996 год) вместе с компонентом SQL Server Agent. В ранних версиях она была менее структурированной и содержала только базовые таблицы для заданий. Начиная с SQL Server 2000, в msdb были добавлены таблицы для резервного копирования, что позволило централизованно хранить историю операций. В SQL Server 2005 появилась поддержка Database Mail, а также расширены возможности мониторинга через системные представления. В версии SQL Server 2012 в msdb были добавлены таблицы для Always On Availability Groups (например, sys.availability_groups). В SQL Server 2016 и 2017 годах функциональность msdb была расширена для поддержки новых возможностей, таких как PolyBase и управляемые экземпляры.
Управление и обслуживание
### Восстановление msdb
msdb, как и другие системные базы данных, может быть восстановлена из резервной копии в случае повреждения. Однако процедура восстановления требует осторожности, так как msdb содержит критически важные для работы сервера данные. Восстановление msdb выполняется в однопользовательском режиме с помощью команды RESTORE DATABASE. После восстановления может потребоваться перезапуск SQL Server Agent.
### Очистка истории
Со временем таблицы msdb, особенно sysjobhistory и backupset, могут разрастаться, что влияет на производительность. Для автоматической очистки используются:
- Планы обслуживания (Maintenance Cleanup Task).
- Хранимая процедура
sp_delete_backuphistory— удаляет устаревшие записи о резервных копиях. - Хранимая процедура
sp_purge_jobhistory— удаляет историю заданий старше указанного срока. - Параметр
@maximum_history_rowsдля заданияsyspolicy_purge_history.
### Резервное копирование
msdb рекомендуется включать в план регулярного резервного копирования, так как потеря данных этой базы может привести к необходимости заново настраивать задания, уведомления и планы обслуживания. Резервное копирование msdb выполняется стандартной командой BACKUP DATABASE msdb. Восстановление msdb из резервной копии возможно только на том же экземпляре SQL Server с той же версией и конфигурацией.
Безопасность
Доступ к msdb регулируется через роли базы данных:
- db_owner — полный доступ.
- SQLAgentUserRole — может создавать и управлять своими заданиями.
- SQLAgentReaderRole — может просматривать все задания.
- SQLAgentOperatorRole — может выполнять и останавливать задания, а также просматривать историю.
Кроме того, для выполнения операций резервного копирования и восстановления требуются соответствующие разрешения (например, BACKUP DATABASE).
Взаимодействие с другими системными базами
msdb тесно связана с другими системными базами:
- master — содержит информацию о конфигурации сервера, в том числе о расположении файлов msdb.
- tempdb — используется для временных данных при выполнении заданий и операций обслуживания.
- model — служит шаблоном для создания новых баз данных, но не влияет напрямую на msdb.
При запуске SQL Server Agent происходит чтение данных из msdb для загрузки расписаний и заданий. Если msdb недоступна или повреждена, агент не запускается.
Типичные проблемы и их решение
- Разрастание таблицы sysjobhistory — приводит к замедлению работы агента. Решение: настройка автоматической очистки через процедуру
sp_purge_jobhistoryили через план обслуживания. - Повреждение msdb — может произойти из-за сбоя диска или ошибки ввода-вывода. Решение: восстановление из резервной копии или, в крайнем случае, воссоздание msdb с помощью скрипта
instmsdb.sql(находится в каталоге установки SQL Server). - Конфликт блокировок — при одновременном выполнении множества заданий может возникнуть взаимная блокировка. Решение: оптимизация расписаний и использование изоляции снимков состояния (snapshot isolation).
Примечания
- Размер msdb по умолчанию составляет около 20–30 МБ, но может значительно увеличиваться при активном использовании агента и резервного копирования.
- В SQL Server Express Edition функциональность msdb ограничена: отсутствует поддержка SQL Server Agent, поэтому задания и уведомления не создаются.
- msdb не поддерживает репликацию в традиционном понимании, но может содержать метаданные для репликации, настроенной на сервере.
Источники
- Microsoft Docs — «msdb Database» (SQL Server documentation).
- Microsoft Docs — «System Databases» (SQL Server documentation).
- Microsoft Docs — «Backup and Restore of System Databases (SQL Server)».
- Microsoft Docs — «SQL Server Agent Tables (Transact-SQL)».
- Microsoft Docs — «Database Mail Configuration and Troubleshooting».
- Microsoft Docs — «Maintenance Plans in SQL Server».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →