В процессе администрирования систем на базе 1С:Предприятие и MS SQL Server часто возникает необходимость удаления неиспользуемых, поврежденных или временных информационных баз. Особенно остро этот вопрос встает при критическом дефиците свободного места на дисках сервера. Некорректное удаление может привести к рассинхронизации кластера 1С и СУБД, «зависанию» фантомных подключений или сохранению тяжелых файлов данных на диске. В качестве альтернативы для высвобождения места в ERP 2 без удаления всей базы применяется многопоточная свёртка 1С:ERP.
В этой статье мы подробно разберем все штатные и альтернативные способы удаления баз данных, проанализируем возможные технические сбои и выясним, как обойти самые распространенные ошибки, включая блокировки из-за активных соединений пользователей. Если вместо полного удаления базы требуется её очистка от данных конкретной компании, используется выборочное удаление организации из 1С.
Это наиболее правильный и безопасный метод, так как он позволяет одновременно убрать регистрацию базы из кластера 1С и физически удалить файлы базы данных из СУБД MS SQL Server. Рассмотрим этот процесс по шагам:
Кластеры, затем выберем нужный кластер (по умолчанию порт 1541) и откроем ветку Информационные базы.sa), после чего нажмем кнопку «ОК».Иногда возникают ситуации, когда связь между сервером приложений 1С и СУБД нарушена, либо база данных повреждена настолько, что консоль 1С выдает ошибки при попытке удаления. В таких случаях мы можем удалить базу напрямую через СУБД.
Рассмотрим два варианта прямого удаления на сервере MS SQL:
Вариант А. Через графический интерфейс SQL Server Management Studio (SSMS):
SQL Server Management Studio и подключимся к нашему экземпляру СУБД.Databases (Базы данных).Вариант Б. Принудительное удаление с помощью T-SQL скрипта:
Если графический интерфейс зависает или выдает ошибку монопольного доступа, мы можем принудительно перевести базу в однопользовательский режим, мгновенно сбросив все транзакции, и сразу удалить её. Для этого создадим новый запрос в SSMS и выполним следующий код:
ALTER DATABASE [Имя_Вашей_Базы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [Имя_Вашей_Базы];
Команда ROLLBACK IMMEDIATE мгновенно разорвет любые внешние подключения, включая активные сессии от сервера приложений 1С, предотвращая зависание процесса удаления.
Это одна из самых частых проблем, с которой мы сталкиваемся при администрировании 1С. Она возникает из-за того, что к базе подключены пользователи, запущены фоновые или регламентные задания, либо сама консоль администрирования удерживает активное соединение.
Проанализируем три эффективных пути решения этой проблемы:
1. Ручное отключение сеансов в консоли 1С
Перед тем как инициировать удаление базы, нам необходимо зайти в ветку Сеансы (Sessions) целевой информационной базы в консоли администрирования 1С. Выделим все активные строки подключений, нажмем клавишу Del (или выберем «Удалить» в контекстном меню) и подтвердим завершение работы пользователей. Сразу после этого, не теряя времени (пока планировщик не запустил очередное регламентное задание), выполняем удаление базы. Для автоматического завершения зависших подключений подойдёт обработка для удаления спящих сеансов на кластере 1С.
2. Метод перезапуска службы Агента 1С
Если сеансы зависли «наглухо» в оперативной памяти и не реагируют на команды удаления из консоли, самым быстрым решением будет перезапуск службы сервера приложений. Для этого откроем оснастку «Службы» (services.msc), найдем службу 1C:Enterprise 8.3 Server Agent (или соответствующую вашей версии платформы службу ragent) и выполним команду «Перезапустить». После запуска службы незамедлительно удалим информационную базу через консоль.
3. Обходной маневр с загрузкой пустого файла резервной копии (.dt)
Существует оригинальный лайфхак, который позволяет сбросить все блокировки без перезапуска всего сервера 1С. Мы можем создать на локальном компьютере временную чистую файловую базу, зайти в нее через Конфигуратор и выполнить выгрузку информационной базы в файл с расширением .dt. Затем загрузим этот «пустой» файл в нашу проблемную серверную базу. Данная процедура принудительно прерывает все текущие транзакции и активные сессии, после чего база беспрепятственно удаляется стандартными средствами.
Когда свободное пространство на сервере практически равно нулю, СУБД MS SQL Server может перевести базу данных в аварийный режим — Suspect (Подозрительная) или Recovery Pending (Ожидание восстановления). В этом состоянии сервер 1С полностью теряет доступ к объектам базы данных и выдает ошибку СУБД при любой попытке взаимодействия. Удалить такую базу стандартным способом через консоль 1С «со всем содержимым» не удастся.
Выясним правильный алгоритм действий для экстренного освобождения диска в такой ситуации:
ALTER DATABASE [Имя_Проблемной_Базы] SET OFFLINE WITH ROLLBACK IMMEDIATE;
.mdf и .ldf).Рассмотрим сценарий, когда администратор сначала удалил базу данных на стороне MS SQL Server, забыв удалить её в 1С. В этом случае запись в кластере 1С зависает, а при попытке её удаления консоль выдает ошибку о том, что база данных не обнаружена на сервере СУБД. Решение здесь очень простое: при удалении базы в консоли 1С выберите вариант «Оставить без изменений». Кластер просто сотрет внутреннюю запись регистрации базы.
Также этот механизм полезен, если вам нужно удалить базу из консоли 1С, но вы не знаете или забыли пароль администратора этой базы 1С. Если база существует физически, платформа потребует авторизоваться для её удаления. Однако, если мы сначала переименуем или временно отключим базу на стороне SQL Server (переведя её в режим Offline), а затем в консоли 1С выберем «Удалить» -> «Оставить без изменений», утилита администрирования увидит отсутствие связи с СУБД и удалит регистрационную запись без запроса пароля администратора 1С.
Для опытных системных администраторов существует метод ручной очистки списков баз данных непосредственно через файлы конфигурации кластера сервера приложений 1С. Этот метод незаменим, когда сама консоль администрирования 1С не запускается, зависает или работает некорректно. Для сопоставления папок кластера и чтения файла 1CV8Clst.lst можно использовать обработку для выявления списка баз из папки reg_xxxx.
Разберем данный процесс по шагам:
ragent) через консоль служб Windows или с помощью командной строки:
net stop "1C:Enterprise 8.3 Server Agent"
C:\Program Files\1cv8\srvinfo.reg_1541).1CV8Clst.lst и откроем его с помощью любого текстового редактора (например, Notepad++).1CV8Clst.lst.
net start "1C:Enterprise 8.3 Server Agent"
После перезапуска службы база полностью исчезнет из списка зарегистрированных в консоли 1С. Теперь мы можем спокойно зайти в MS SQL Server Management Studio и удалить физическую базу данных с диска, окончательно завершив процесс очистки дискового пространства.