Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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

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С?

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