Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_MSDB_MODEL_RESTORE 1С:Предприятие и СУБД

Восстановление системных баз данных msdb и model в SQL Server

Обновлено: 26.08.2026 · Официальная документация ↗

Сбои системных баз msdb и model приводят к тяжелым функциональным нарушениям инфраструктуры СУБД:

  • Сбой msdb: Служба SQL Server Agent не запускается, планы обслуживания (Maintenance Plans) и регламентные джобы бэкапов перестают выполняться, теряется история резервного копирования;
  • Сбой model: Невозможно создать новую базу данных, а служба SQL Server не может стартовать, так как база tempdb создается при каждом перезапуске как копия базы model.

1. Процедура восстановления базы msdb

База msdb используется Агентом SQL Server, Database Mail и Service Broker. Перед ее восстановлением необходимо остановить зависимые службы:

-- 1. Остановка Агента SQL Server
net stop SQLSERVERAGENT

-- 2. Перевод msdb в монопольный режим и восстановление
USE [master];
GO
ALTER DATABASE [msdb] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

RESTORE DATABASE [msdb]
FROM DISK = N'E:\Backup\System\msdb_Full.bak'
WITH REPLACE, RECOVERY;
GO

ALTER DATABASE [msdb] SET MULTI_USER;
GO

-- 3. Запуск Агента
net start SQLSERVERAGENT

2. Процедура восстановления базы model

База model является шаблоном для создания всех новых баз и базы tempdb.

USE [master];
GO
ALTER DATABASE [model] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

RESTORE DATABASE [model]
FROM DISK = N'E:\Backup\System\model_Full.bak'
WITH REPLACE, RECOVERY;
GO

ALTER DATABASE [model] SET MULTI_USER;
GO

3. Восстановление msdb из шаблонов дистрибутива (если бэкапов нет)

Если бэкап msdb отсутствует, скопируйте оригинальные чистые файлы шаблонов из установочного каталога:

-- Скопируйте файлы msdbdata.mdf и msdblog.ldf из каталога:
-- C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn\Templates\
-- в рабочий каталог данных DATA, предварительно остановив службу SQL Server.
💡 Практика специалистов: Никогда не храните пользовательские таблицы в базе model. Любая созданная там таблица будет автоматически дублироваться во всех вновь создаваемых базах и в tempdb при каждом перезапуске инстанса.

Частые вопросы (FAQ)

Почему при падении базы model не запускается весь SQL Server?

При каждом старте экземпляра движок СУБД пересоздает временную системную базу tempdb с нуля, копируя структуру, параметры и размерные характеристики из базы model. Если model повреждена, tempdb не может быть инициализирована, и сервер падает.

Можно ли перевести базу msdb в модель восстановления FULL?

Да, но это не рекомендуется, если вы не делаете регулярный бэкап логов msdb. Таблицы истории джобов и резервного копирования быстро переполнят журнал транзакций msdb.ldf.

Теряются ли настроенные планы обслуживания (Maintenance Plans) при восстановлении msdb из старого бэкапа?

Да, все SSIS-пакеты планов обслуживания и расписания SQL Agent хранятся внутри msdb. Они вернутся к состоянию на момент создания бэкапа.

Как очистить разросшуюся историю выполнения заданий в msdb?

Используйте системную хранимую процедуру: EXEC msdb.dbo.sp_purge_jobhistory @oldest_date = '2024-01-01'.

Полезные материалы
Рекомендуем