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

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

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

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

MSSQL Error 14120: Could not drop the distribution database because it is in use

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка Msg 14120, Level 16, State 1: Could not drop the distribution database 'distribution' because it is in use.
  • Невозможно удалить базу distribution ни через SSMS, ни через T-SQL команду DROP DATABASE.
  • Сбои при попытке перенастройки или полного удаления топологии SQL Server Replication.
  • Зависшие сессии процессов репликации, удерживающие эксклюзивные блокировки на системных объектах.

1. Поиск сессий, удерживающих базу distribution

SELECT session_id, host_name, program_name, login_name 
FROM sys.dm_exec_sessions 
WHERE database_id = DB_ID('distribution');

2. Остановка службы SQL Server Agent и завершение процессов

-- Перевод базы дистрибуции в режим Single User с немедленным сбросом сессий
ALTER DATABASE [distribution] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

3. Принудительное удаление публикаций и подписок

-- Выполняется на базе-источнике (Publisher)
EXEC sp_removedbreplstatus @dbname = 'your_1c_db';
EXEC sp_cleanupdbreplication;

4. Принудительное удаление роли дистрибьютора

-- Выполняется на сервере-дистрибьюторе (Distributor)
EXEC sp_dropdistributor @no_checks = 1, @ignore_distributor = 1;

5. Окончательное удаление базы distribution

IF EXISTS (SELECT name FROM sys.databases WHERE name = 'distribution')
BEGIN
    ALTER DATABASE [distribution] SET OFFLINE;
    DROP DATABASE [distribution];
END
💡 Практика специалистов: Если после сбоя репликации база distribution осталась в статусе (In Recovery / Suspect), перед выполнением sp_dropdistributor переведите ее в аварийный режим через ALTER DATABASE distribution SET EMERGENCY.

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

Почему обычная команда DROP DATABASE distribution завершается ошибкой 14120?

База distribution защищена ядром СУБД на системном уровне. Она не может быть удалена обычным DROP DATABASE, пока зарегистрирована как системное хранилище репликации через sp_adddistributor.

Нужно ли останавливать агент SQL Server перед удалением distribution?

Да, остановка SQL Server Agent или отключение заданий категорий 'REPL-*' предотвращает повторные автоматические попытки агентов подключиться к базе во время ее удаления.

Что делать, если sp_dropdistributor выдает ошибку о существующих публикациях?

Используйте расширенный флаг игнорирования проверок: EXEC sp_dropdistributor @no_checks = 1, @ignore_distributor = 1.

Повлияет ли удаление базы distribution на рабочую базу 1С?

Нет, данные в рабочей базе останутся нетронутыми, однако остановится вся репликация данных на подчиненные узлы (РИБ/отчетные сервера).

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