Как правильно удалить базу данных 1С и SQL Server: подробное руководство

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе администрирования систем на базе 1С:Предприятие и MS SQL Server часто возникает необходимость удаления неиспользуемых, поврежденных или временных информационных баз. Особенно остро этот вопрос встает при критическом дефиците свободного места на дисках сервера. Некорректное удаление может привести к рассинхронизации кластера 1С и СУБД, «зависанию» фантомных подключений или сохранению тяжелых файлов данных на диске. В качестве альтернативы для высвобождения места в ERP 2 без удаления всей базы применяется многопоточная свёртка 1С:ERP.

В этой статье мы подробно разберем все штатные и альтернативные способы удаления баз данных, проанализируем возможные технические сбои и выясним, как обойти самые распространенные ошибки, включая блокировки из-за активных соединений пользователей. Если вместо полного удаления базы требуется её очистка от данных конкретной компании, используется выборочное удаление организации из 1С.

Способ №1: Удаление базы через консоль «Администрирование серверов 1С:Предприятие»

Это наиболее правильный и безопасный метод, так как он позволяет одновременно убрать регистрацию базы из кластера 1С и физически удалить файлы базы данных из СУБД MS SQL Server. Рассмотрим этот процесс по шагам:

  1. Откроем утилиту «Администрирование серверов 1С:Предприятие» на сервере приложений. Для автоматизации регулярной архивации и обслуживания информационных баз применяется программа для автоматического обновления и тестирования 1С.
  2. Раскроем ветку нашего центрального сервера, перейдем в раздел Кластеры, затем выберем нужный кластер (по умолчанию порт 1541) и откроем ветку Информационные базы.
  3. Найдем базу, которую требуется удалить, нажмем по ней правой кнопкой мыши и выберем пункт «Удалить».
  4. В открывшемся диалоговом окне система предложит нам выбрать одно из трех действий:
    1. Оставить без изменений — в этом случае запись о базе со всеми настройками удаляется только из кластера 1С, а сама физическая база данных на SQL-сервере остается нетронутой.
    2. Очистить базу данных — параметры СУБД и сама база сохраняются, но из нее полностью вычищаются все таблицы, конфигурация и данные. База становится абсолютно пустой.
    3. Удалить базу данных — это именно тот вариант, который нам нужен. При его выборе сервер 1С отправляет SQL-серверу команду на физическое уничтожение базы данных и освобождение дискового пространства. Она сотрется со всем содержимым.
  5. Выберем вариант «Удалить базу данных», введем имя и пароль администратора кластера (если они заданы), а также имя и пароль администратора СУБД (например, системного пользователя sa), после чего нажмем кнопку «ОК».

Способ №2: Прямое удаление базы на стороне MS SQL Server

Иногда возникают ситуации, когда связь между сервером приложений 1С и СУБД нарушена, либо база данных повреждена настолько, что консоль 1С выдает ошибки при попытке удаления. В таких случаях мы можем удалить базу напрямую через СУБД.

Рассмотрим два варианта прямого удаления на сервере MS SQL:

Вариант А. Через графический интерфейс SQL Server Management Studio (SSMS):

  1. Запустим среду SQL Server Management Studio и подключимся к нашему экземпляру СУБД.
  2. В обозревателе объектов (Object Explorer) раскроем ветку Databases (Базы данных).
  3. Найдем целевую базу данных, кликнем по ней правой кнопкой мыши и выберем пункт «Delete» (Удалить).
  4. В появившемся окне обязательно установим флажок «Close existing connections» (Закрыть существующие соединения) в нижней части формы. Если этого не сделать, SQL Server не позволит удалить базу, если к ней обращается сервер 1С или другие службы.
  5. Нажмем кнопку «ОК» для подтверждения операции.

Вариант Б. Принудительное удаление с помощью 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С «со всем содержимым» не удастся.

Выясним правильный алгоритм действий для экстренного освобождения диска в такой ситуации:

  1. Переведем аварийную базу данных в автономный режим (offline) на стороне SQL-сервера с помощью T-SQL запроса: ALTER DATABASE [Имя_Проблемной_Базы] SET OFFLINE WITH ROLLBACK IMMEDIATE;
  2. Откроем проводник Windows и перейдем в каталог, где физически хранятся файлы баз данных SQL (обычно это файлы с расширениями .mdf и .ldf).
  3. Вручную удалим эти файлы с диска. Место на сервере освободится мгновенно.
  4. Теперь откроем консоль администрирования 1С, выберем нашу базу, нажмем «Удалить» и в появившемся окне обязательно выберем пункт «Оставить без изменений». Кластер 1С просто очистит запись регистрации базы, не пытаясь отправить запрос к уже несуществующим файлам на SQL-сервере.

Рассинхронизация списков баз (Desync) и удаление без пароля администратора

Рассмотрим сценарий, когда администратор сначала удалил базу данных на стороне MS SQL Server, забыв удалить её в 1С. В этом случае запись в кластере 1С зависает, а при попытке её удаления консоль выдает ошибку о том, что база данных не обнаружена на сервере СУБД. Решение здесь очень простое: при удалении базы в консоли 1С выберите вариант «Оставить без изменений». Кластер просто сотрет внутреннюю запись регистрации базы.

Также этот механизм полезен, если вам нужно удалить базу из консоли 1С, но вы не знаете или забыли пароль администратора этой базы 1С. Если база существует физически, платформа потребует авторизоваться для её удаления. Однако, если мы сначала переименуем или временно отключим базу на стороне SQL Server (переведя её в режим Offline), а затем в консоли 1С выберем «Удалить» -> «Оставить без изменений», утилита администрирования увидит отсутствие связи с СУБД и удалит регистрационную запись без запроса пароля администратора 1С.

Способ №3: Ручное удаление базы из конфигурационных файлов кластера 1С

Для опытных системных администраторов существует метод ручной очистки списков баз данных непосредственно через файлы конфигурации кластера сервера приложений 1С. Этот метод незаменим, когда сама консоль администрирования 1С не запускается, зависает или работает некорректно. Для сопоставления папок кластера и чтения файла 1CV8Clst.lst можно использовать обработку для выявления списка баз из папки reg_xxxx.

Разберем данный процесс по шагам:

  1. Остановим службу Агента сервера 1С:Предприятие (ragent) через консоль служб Windows или с помощью командной строки: net stop "1C:Enterprise 8.3 Server Agent"
  2. Перейдем в каталог хранения настроек службы Агента сервера 1С. По умолчанию в Windows это папка C:\Program Files\1cv8\srvinfo.
  3. Внутри этой папки найдем каталог вашего кластера (его имя соответствует уникальному идентификатору UUID кластера, например, reg_1541).
  4. Найдем в этой папке конфигурационный файл с именем 1CV8Clst.lst и откроем его с помощью любого текстового редактора (например, Notepad++).
  5. Проанализируем структуру файла. В нем содержится список зарегистрированных информационных баз с их UUID и параметрами подключения к SQL.
  6. Аккуратно найдем блок текста, описывающий ту базу данных, которую необходимо удалить, и сотрем его, строго соблюдая синтаксическую целостность фигурных скобок файла разметки 1С.
  7. Сохраним изменения в файле 1CV8Clst.lst.
  8. Запустим службу Агента сервера 1С: net start "1C:Enterprise 8.3 Server Agent"

После перезапуска службы база полностью исчезнет из списка зарегистрированных в консоли 1С. Теперь мы можем спокойно зайти в MS SQL Server Management Studio и удалить физическую базу данных с диска, окончательно завершив процесс очистки дискового пространства.

← На главную